Unityで「簡単な3Dコイン落としゲーム」を作成するPart3を進めていきます。今回は「コインの発射位置の変更」、「落としたコインの数をカウント」を実装していきます。
はじめに
前回の続きのPart3を作成していきます。Part2は下記から。
Part1ではコインの生成を作成、Part2ではコインを押す土台の作成を行いました。
作成開始
Part3では「コインの発射位置の変更」と「落としたコインの数をカウント」を実装していきます。
コインの発射位置変更
まずはコインの落とす位置を変更します。Hierarchyで「3DObject」→「Sphere」を選択、コインを落とすオブジェクトになります。名前をDropに変更して、位置と色を変更しておきます。


GameManagerスクリプトを下記に変更します。コインを落とすオブジェクトを移動するのを追加しています。
using UnityEngine; public class GameManager : MonoBehaviour { [SerializeField] private GameObject CoinPrefab; [SerializeField] private GameObject Pusher; [SerializeField] private float moveSpeed; [SerializeField] private GameObject Drop; [SerializeField] private float dropSpeed; private int Pushdirection = 1; private int Dropdirection = 1; void Update() { if (Input.GetMouseButtonDown(0)) { Instantiate(CoinPrefab, Drop.transform.position, transform.rotation); } } private void FixedUpdate() { Pusher.transform.position = new Vector3(0,1, Pusher.transform.position.z + moveSpeed * Time.fixedDeltaTime * Pushdirection); if (Pusher.transform.position.z >= 3) Pushdirection = -1; if (Pusher.transform.position.z <= 0) Pushdirection = 1; Drop.transform.position = new Vector3( Drop.transform.position.x + dropSpeed * Time.fixedDeltaTime * Dropdirection, 5, -2.5f); if (Drop.transform.position.x >= 3) Dropdirection = -1; if (Drop.transform.position.x <= -3) Dropdirection = 1; } }
スクリプトのパラメータをセットします。

実行して下記のような感じに動けばOKです。

コインを縦向きで落としたい場合は、スクリプトの生成部分を下記のように変更します。
Instantiate(CoinPrefab, Drop.transform.position, transform.rotation * Quaternion.Euler(90f, 0f, 0f));
コインのカウント
次に台から落ちたコインの数をカウントしていきます。Groundをコピーして名前を「CoinCheck」に変更、位置とスケールを変更します。

MeshRendererをオフにして見えなくします。また、BoxColliderのisTriggerにチェックを入れます。

新規スクリプトを作成します。通過したときにカウントします。
using UnityEngine; public class CoinCount : MonoBehaviour { public int CoinNum; private void OnTriggerEnter(Collider other) { CoinNum++; } }
スクリプトを追加して、コインが落ちたときにカウントアップされたらOKです。

ここから「機能を追加」、「見た目を変更」、「バグ・動作の修正」などを行い、実際のゲームを作成していきます。とりあえず、コイン落としのベースとなる部分は作成はここまでとなります。