Instantiateを使って発射する場合、自分のポジションから生成してしまうことで、動きに悪影響が出る場合があります。
ボールの発射位置を、プレーヤーの前方から出ていくようにしましょう。
関連記事:
プレーヤーの向いている方向に発射する
移動と発射・MainCamera追従を組合わせる
キャラクターコントローラーに発射機能
前方にオブジェクトを置く
プレーヤーの前に空のオブジェクトをつくる
Cubeオブジェクトをつくり、真横のアングルから確認します。
遠近投影はOFFにしています。
座標はすべて0にしましょう。
Cubeを右クリックして、空のオブジェクト(GameObject)を作成しましょう。
GameObjectが発射ポイントになります。
今回はZ方向に1だけずらしました。
シーンビューではこのように確認できます。
ボール発射のスクリプト
ボールのPrefabデータを用意しましょう。
リジッドボディを追加し、重力を使用(UseGravity)はチェックを外します。
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 { [SerializeField] GameObject sphere; private float speed = 300; void Update () { if(Input.GetKeyDown("space")) { GameObject ball = (GameObject)Instantiate(sphere, transform.position, Quaternion.identity); Rigidbody ballRigidbody = ball.GetComponent<Rigidbody>(); ballRigidbody.AddForce(transform.forward * speed); } } } |
スフィアのフィールドに、Prefabデータを入れます。
プレイしてみましょう。
スペースキーを押すと、Cubeの前方からボールが発射されます。
次回では動きながら発射するしくみを紹介しています。
関連記事:
プレーヤーの向いている方向に発射する
移動と発射・MainCamera追従を組合わせる
キャラクターコントローラーに発射機能
前方にオブジェクトを置く