前方から向かってきたオブジェクトを、キャッチできるように、スクリプトを作成してみましょう。
飛んできたボールに触れると、そのまま前方で保持。
Cubeを操作しても、ボールを保持したままの状態で動いていきます。
関連記事:
前方からボールがランダムで向かってくる
保持したボールをプレーヤーと同じ向きで発射
音ゲーのノーツみたいなオブジェクト動作
ターゲットに向かってオブジェクトをぶつける
プレーヤーの動き
Cubeを作成し、Z方向を下げておきます。
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 |
using System.Collections; using System.Collections.Generic; using UnityEngine; public class CubeMove : MonoBehaviour { public float speed = 5.0f; void Update() { if (Input.GetKey (KeyCode.UpArrow)) { transform.position += transform.up * speed * Time.deltaTime; } if (Input.GetKey (KeyCode.DownArrow)) { transform.position -= transform.up * speed * Time.deltaTime; } if (Input.GetKey(KeyCode.RightArrow)) { transform.position += transform.right * speed * Time.deltaTime; } if (Input.GetKey (KeyCode.LeftArrow)) { transform.position -= transform.right * speed * Time.deltaTime; } } } |
飛んできたオブジェクトを保持する
空のオブジェクトを作成し、位置を変えます。
BallShot.csを作成し、GameObjectに追加します。
BallShot.csを記述します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
using System.Collections; using System.Collections.Generic; using UnityEngine; public class BallShot : MonoBehaviour { public GameObject prefab; void Start() { GameObject ball = GameObject.Instantiate (prefab,transform.position,transform.rotation)as GameObject; ball.GetComponent<Rigidbody>().AddForce(transform.forward * -1000); } } |
Sphereを作成し、リジッドボディを追加します。
Catch.csを作成し、Sphereに追加します。
Catch.csを記述します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
using System.Collections; using System.Collections.Generic; using UnityEngine; public class Catch : MonoBehaviour { void OnCollisionStay(Collision col) { if (col.gameObject.name == "Cube") { this.transform.position = new Vector3(col.transform.position.x, col.transform.position.y, col.transform.position.z + 1.0f); } } } |
Sphereをプロジェクトビューにドラッグ&ドロップし、プレハブ化します。
Sphereの元データは削除しておきます。
GameObjectを選択し、プレハブのフィールドに、Sphereを入れます。
ゲームプレイしてみましょう。
飛んできたボールをキャッチ。
プレーヤーを動かしても、ボールを保持し続けます。
関連記事:
前方からボールがランダムで向かってくる
保持したボールをプレーヤーと同じ向きで発射
音ゲーのノーツみたいなオブジェクト動作
ターゲットに向かってオブジェクトをぶつける