周囲のあらゆる方向から、自分に向かってオブジェクトが飛んでくるように、スクリプトを作ってみましょう。
四方八方から、1秒おきにボールが向かってきます。
全方向から自機狙いで発射される仕組みは、ゲーム制作のいろいろな場面で活用できそうです。
関連記事:
自機狙い(プレーヤーに向けた)発射 -3Dゲーム
n秒おきにランダムの場所に向かって動き続ける
敵キャラがランダム移動して発射
ターゲットに向かってオブジェクトをぶつける
倒れる方向をランダムにする
全方向から自機狙い発射
まずはプレーヤーとして、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 |
using System.Collections; using System.Collections.Generic; using UnityEngine; public class CubeMove : MonoBehaviour { private float speed; void Start() { speed = 5.0f; } void Update() { if (Input.GetKey ("up")) { transform.position += transform.up * speed * Time.deltaTime; } if (Input.GetKey ("down")) { transform.position -= transform.up * speed * Time.deltaTime; } if (Input.GetKey("right")) { transform.position += transform.right * speed * Time.deltaTime; } if (Input.GetKey ("left")) { transform.position -= transform.right * speed * Time.deltaTime; } } } |
これで十字キーでCubeを動かすことができます。
続いて、Sphereを作成し、リジッドボディを追加します。
Sphereをプロジェクトビューにドラッグ&ドロップし、プレハブ化します。
Sphereの元データは削除しておきます。
空のオブジェクト(GameObject)を作成します。
BallShot.csを作成し、GameObjectに追加します。
BallShot.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 |
using System.Collections; using System.Collections.Generic; using UnityEngine; public class BallShot : MonoBehaviour { private float time; private int vecX; private int vecY; public GameObject cube; public GameObject ball; public float ballSpeed; void Start() { time = 0; ballSpeed = 10; } void Update() { time -= Time.deltaTime; if(time <= 0.0f) { vecX = Random.Range(-5,5); vecY = Random.Range(-5,5); transform.position = new Vector3(vecX,vecY,0); transform.LookAt(cube.transform); var shot = Instantiate(ball, transform.position, Quaternion.identity); shot.GetComponent<Rigidbody>().velocity = transform.forward.normalized * ballSpeed; time = 2.0f; } } } |
キューブのフィールドにCubeを、BallのフィールドにSphereのプレハブを入れます。
ゲームプレイしてみましょう。
空中の全方向から、プレーヤーに向けてボールが飛んできます。
関連記事:
自機狙い(プレーヤーに向けた)発射 -3Dゲーム
n秒おきにランダムの場所に向かって動き続ける
敵キャラがランダム移動して発射
ターゲットに向かってオブジェクトをぶつける
倒れる方向をランダムにする