プレーヤーの向きからボール発射する方法を見ていきましょう。
左右キーで回転し、スペースキーを押すと、自分が向いている方向へ撃つことができます。
発射体がプレーヤーにぶつからないように、少し前方に発射ポイントを作っています。
関連記事:
一度に複数のオブジェクトを発射
キーを長押しでn秒おきに発射
前後左右へ順番にボール発射
発射したボールをカーブさせる
Shift+クリックで発射のパワーを変える
指定の座標からn秒おきに発射
発射の弾数を制限する
発射位置をプレーヤーの前につくる
CubeとPlaneを作成し、Planeを少し下に下げます。
シーンビューではこのように見えています。
Cubeにリジッドボディを追加します。
発射するオブジェクトにぶつからないように、発射ポイントを作成しましょう。
Cubeを右クリックして、空のオブジェクトを作成。
プレーヤーの前方ということで、Z方向に1ずらして配置します。
この位置から、ボールを発射します。
BallShot.csを作成し、Cubeに追加します。
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 |
using System.Collections; using System.Collections.Generic; using UnityEngine; public class BallShot : MonoBehaviour { [SerializeField] GameObject sphere; [SerializeField] GameObject childObj; private float speed = 300; void Start() { childObj = transform.GetChild(0).gameObject; } void Update() { if(Input.GetKeyDown("space")) { GameObject ball = (GameObject)Instantiate(sphere, childObj.transform.position, Quaternion.identity); Rigidbody ballRigidbody = ball.GetComponent<Rigidbody>(); ballRigidbody.AddForce(transform.forward * speed); } if(Input.GetKey("right")) { transform.Rotate(0,2,0); } if(Input.GetKey("left")) { transform.Rotate(0,-2,0); } } } |
続いて、発射するプレハブを用意しましょう。
Sphereを作成して、リジッドボディを追加。
プロジェクトビューにドラッグ&ドロップして、プレハブ化します。
Sphereの元データは削除しておきましょう。
スフィアのフィールドに、Sphereのプレハブを入れます。
ゲームプレイしてみましょう。
左右キーで回転し、スペースキーで発射。
プレーヤーの向いている方向から、前に向かってボールが発射されています。
プレーヤーの前方にある子オブジェクトを取得して、ここを発射の位置としています。
関連記事:
一度に複数のオブジェクトを発射
キーを長押しでn秒おきに発射
前後左右へ順番にボール発射
発射したボールをカーブさせる
Shift+クリックで発射のパワーを変える
指定の座標からn秒おきに発射
発射の弾数を制限する
[sc name="blog_footer" ][/sc]