新たに変な機能を色々付けたバージョンを作りました。上のボタンからプレイできます。透明な箱に入っているのはアイテムです。敵キャラを倒すとランダムでひらがなか何かが落ちるかもしれません。ひらがなが落ちる確率は1/10です。その他のアイテムが落ちる確率は1/2です。
それから、敵の形を平仮名にしました。ひらがなの何処を撃っても当たり判定が出るようになっています。敵のひらがなの並びはランダムです。2~5文字のランダムのひらがなが自動生成されるようになっています。
また、インベントリに格納された文字のアイテムは上下左右に動かして並び替えることが出来ます。最終的にはこの文字の並びによってなにか効果が発動したら面白いかもしれないなと思っています。
まずはひらがなの自動生成ですが、最初にランダムで2~6の間の整数を取得します。その回数分for文を回して、ランダムで文字を入れてあげています。
int wordNumber = Random.Range(2, 6); for (int i = 0; i < wordNumber; i++) { int dice = Random.Range(0, 10); if(dice == 0) { //文字の挿入 var wordPosition = PhotonNetwork.Instantiate("WordA", new Vector3(transform.position.x + 3 * i, transform.position.y + 2f, transform.position.z), Quaternion.identity, 0); wordPosition.transform.parent = gameObject.transform; }else if (dice == 1) { //文字の挿入 var wordPosition = PhotonNetwork.Instantiate("WordI", new Vector3(transform.position.x + 3 * i, transform.position.y + 2f, transform.position.z), Quaternion.identity, 0); wordPosition.transform.parent = gameObject.transform; }
当たり判定は、wordというタグを文字に付けてあげて、Rayがwardのタグを持ったものに当たったらwordの親のEnemyについているスクリプトの関数をparentで呼ぶことで、Enemy自体のヒットポイントを減らすようになっています。
if (hit.transform.tag == "word") { hitExplosion.Play(); hit.transform.parent.GetComponent<PhotonView>().RPC("GetShot", PhotonTargets.All, damage); }
アイテムが落ちる仕掛けは、OnDestroy関数でひらがながEnemyと一緒に消えた瞬間にアイテムをInstantiateするようにしています。
private void OnDestroy() { Vector3 currentposition = this.transform.position; Quaternion currentquanternion = this.transform.rotation; int index = Random.Range(0, 10); if (index == 0) { PhotonNetwork.Instantiate("ItemU", currentposition, currentquanternion, 0); } }
アイテムの取得は以前の記事にアップしたアイテムの取得の通りになります。敵オブジェクトのひらがなと、アイテムのひらがなと、取得したアイテムのインベントリ内のひらがなと、3種類のひらがなPrefabを作る必要があり、かなり時間がかかりました。
もっと手数の少ないゲームにすればよかったなと今更思う次第です。