発射したオブジェクトが、グルグル回りながら進んでいくように、スクリプトを作成してみましょう。
クリックで発射されたボールが、円形の動きをつけながら飛んでいきます。
円を描きながら飛んでいく
空のオブジェクトを作成し、名前をCenterPointに変更。
座標をすべて0に合わせます。
Sphereを作成し、Xを1にします。
リジッドボディを追加して、重力をオフにします。
CenterPointの中に入れて、子オブジェクトにします。
BallMove.csを作成し、Sphereに追加します。
BallMove.csを記述します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
using System.Collections; using System.Collections.Generic; using UnityEngine; public class BallMove : MonoBehaviour { float angle = 500; float speed = 10; private GameObject parentObj; void Start() { parentObj = transform.parent.gameObject; } void Update () { transform.Translate(new Vector3(0, 0, speed * Time.deltaTime)); transform.RotateAround (parentObj.transform.position, Vector3.forward, angle * Time.deltaTime); } } |
CenterPointをプレハブにします。
CenterPointの元データは削除します。
空のオブジェクトを作成します。
BallShot.csを作成し、GameObject(空のオブジェクト)に追加します。
BallShot.csを記述します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
using System.Collections; using System.Collections.Generic; using UnityEngine; public class BallShot : MonoBehaviour { public GameObject prefab; private Vector3 mousePosition; void Update() { if (Input.GetMouseButtonDown(0)) { mousePosition = Input.mousePosition; mousePosition.z = 10.0f; Instantiate(prefab, Camera.main.ScreenToWorldPoint(mousePosition),Quaternion.identity); } } } |
プレハブのフィールドに、CenterPointを入れます。
ゲームプレイして、動きを確認しましょう。
クリックで発射したボールが、円を描きながら飛んでいきます。