飛ばしたボールにカーブをかけてみましょう。
あらかじめ右矢印キーを押せば、カーブのフラグがONに。
スペースキーで発射され、近づいてきた手前で、右斜下に落ちていきます。
関連記事:
発射したPrefabをキー操作で曲げる
ターゲットに向かってオブジェクトをぶつける
発射したオブジェクトを回転させる
キーを長押しでn秒おきに発射
保持したボールをプレーヤーと同じ向きで発射
飛ばしたボールが手前で落ちる
Sphereを作成し、リジッドボディを追加します。
BallCurve.csを作成し、Sphereに追加します。
BallCurve.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 |
using System.Collections; using System.Collections.Generic; using UnityEngine; public class BallCurve : MonoBehaviour { void Update() { if(BallShot.instance.isCurve) { if(transform.position.z < 0) { transform.position = new Vector3( transform.position.x + 0.1f, transform.position.y - 0.1f, transform.position.z ); } } if(transform.position.z < -10) { Destroy(gameObject); } } } |
Sphereをプロジェクトビューにドラッグ&ドロップし、プレハブ化します。
Sphereの元データは削除しておきます。
続いて、空のオブジェクトを作成し、位置と回転を変更します。
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 35 36 37 38 39 40 41 42 43 44 45 |
using System.Collections; using System.Collections.Generic; using UnityEngine; public class BallShot : MonoBehaviour { public GameObject prefab; public bool isCurve; private float time; public static BallShot instance; public void Awake() { if(instance == null) { instance = this; } } void Start() { time = 0; } void Update() { if(Input.GetKeyDown("space")) { GameObject ball = GameObject.Instantiate (prefab,this.transform.position,Quaternion.identity)as GameObject; ball.GetComponent<Rigidbody>().AddForce(transform.forward * 1500); } if (Input.GetKeyDown(KeyCode.RightArrow)) { isCurve = true; } time += Time.deltaTime; if(time >= 2) { isCurve = false; time = 0; } } } |
プレハブのフィールドに、Sphereのプレハブを入れます。
ゲームプレイしてみましょう。
まずは普通にスペースキーを押せば、ボールがまっすぐ飛んできます。
次に、十字キーの右を押してからスペースキーを押しましょう。
手前でカーブがかかり、斜下に落下していきます。
関連記事:
発射したPrefabをキー操作で曲げる
ターゲットに向かってオブジェクトをぶつける
発射したオブジェクトを回転させる
キーを長押しでn秒おきに発射
保持したボールをプレーヤーと同じ向きで発射