円形に動きながら、前方に向けて発射するキャラクターを作成してみましょう。
今回の例では、Cubeが円を描くように動いていて、1秒おきにこちらに向けて発射する敵キャラを作ってみます。
関連記事:
キャラクターを円状に動かす方法1
キャラクターを円状に動かす方法2
ターゲットの周囲を円形に移動する
円を描くように移動する
3秒おきに出現して撃ってくる
円状に動いて撃ってくる敵キャラ
Cubeを作成してリジッドボディを追加。
isKinematicにチェックを入れ、位置を変更します。
続いて、弾となるプレハブを作成しましょう。
Sphereを作成して、リジッドボディを追加。
プロジェクトビューにドラッグ&ドロップして、Prefab化します。
Sphereの元データは削除します。
CircleMove.csを作成し、Cubeに追加します。
CircleMove.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 |
using System.Collections; using System.Collections.Generic; using UnityEngine; public class CircleMove : MonoBehaviour { Rigidbody rb; float speed = 1.0f; float radius = 3.0f; float time; public GameObject prefab; void Start() { transform.Rotate(new Vector3(0, 180, 0)); rb = GetComponent<Rigidbody>(); time = 1.0f; } void Update() { rb.MovePosition(new Vector3(radius * Mathf.Sin(Time.time * speed), radius * Mathf.Cos(Time.time * speed), 5.0f)); time -= Time.deltaTime; if (time < 0) { GameObject ball = GameObject.Instantiate(prefab, this.transform.position, Quaternion.identity)as GameObject; ball.GetComponent<Rigidbody>().AddForce(transform.forward * 1000); time = 1; } } } |
プレハブのフィールドに、Sphereのプレハブを入れます。
ゲームプレイしてみましょう。
円形に動くCubeから、こちらに向かってボールが飛んできます。
関連記事:
キャラクターを円状に動かす方法1
キャラクターを円状に動かす方法2
ターゲットの周囲を円形に移動する
円を描くように移動する
3秒おきに出現して撃ってくる