飛んでくるオブジェクトにぶつかれば、点数が増えるしくみを作ってみましょう。
前方から1秒おきに飛んでくるボールのPrefab。
Cube(プレーヤー)がボールに触れるとスコアが加算され、コンソールに表示されます。
関連記事:
点数をテキスト表示
敵に当たるとスコアを加点-2Dシューティング
ハイスコアをつくる
ベストタイム(最短時間)の更新とリセット
点数によるABC評価ランク
ぶつかると点数が増える仕組み
Sphereを作成し、リジッドボディを追加します。
Sphereをプロジェクトビューにドラッグ&ドロップし、プレハブ化します。
Ballという名前でタグをつけます。
Sphereの元データは削除しておきましょう。
空のオブジェクトを作成します。
BallShot.csを作成し、GameObject(空のオブジェクト)に追加します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
using System.Collections; using System.Collections.Generic; using UnityEngine; public class BallShot : MonoBehaviour { public GameObject prefab; private float time; void Start() { time = 1; } void Update() { time -= Time.deltaTime; if (time < 0) { GameObject ball = GameObject.Instantiate(prefab,new Vector3(0, 5, 20),Quaternion.identity)as GameObject; ball.GetComponent<Rigidbody>().AddForce(transform.forward * -1000); time = 1; } } } |
発射される位置は、Y座標5、Z座標20を指定しています。
プレハブのフィールドに、Sphereのプレハブデータを入れます。
続いて、プレーヤーとしてCubeを作成します。
CubeMove.csを作成し、Cubeに追加します。
CubeMove.csを記述します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
using System.Collections; using System.Collections.Generic; using UnityEngine; public class CubeMove : MonoBehaviour { private int score; void Update() { if (Input.GetKey(KeyCode.UpArrow)) { transform.Translate(0f, 0.1f, 0); } if (Input.GetKey(KeyCode.DownArrow)) { transform.Translate(0f, -0.1f, 0); } if (Input.GetKey(KeyCode.LeftArrow)) { transform.Translate(-0.1f, 0f, 0f); } if (Input.GetKey(KeyCode.RightArrow)) { transform.Translate(0.1f, 0f, 0f); } } void OnCollisionEnter(Collision other) { if(other.gameObject.tag == "Ball") { Destroy(other.gameObject); score++; Debug.Log(score); } } } |
ゲームプレイして、十字キーで操作します。
ボールにぶつかると削除されて、スコアが1ずつ加点されていきます。
コンソールでスコアを確認しましょう。
関連記事:
点数をテキスト表示
敵に当たるとスコアを加点-2Dシューティング
ハイスコアをつくる
ベストタイム(最短時間)の更新とリセット
点数によるABC評価ランク