持っているボールを、プレーヤーの向いている方向へ飛ばせる仕組みをつくりましょう。
※今回は、以下の2ページを終えてから、作成してください。
①ボールを持つ 取ったオブジェクトを前で持ち続ける
②ボールを置く オブジェクトを持ったり置いたりする
ボールを保持した状態で、スペースキーを押せば、プレーヤーの向いている方向へむけて発射。
もう一度ボールに触れたら、また持つことができます。
プレーヤーの向きを常時取得
Cubeを使って、壁を作成しましょう。
Wall1~4という名前をつけて、四方を囲みました。
Cubeに追加している、CubeMove.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 |
using System.Collections; using System.Collections.Generic; using UnityEngine; public class CubeMove : MonoBehaviour { public Vector3 direction; //追加 void Update() { direction = transform.forward; //追加 if(Input.GetKey("up")) { transform.position += transform.forward * 0.03f; } if(Input.GetKey("down")) { transform.position += transform.forward * -0.03f; } if(Input.GetKey("right")) { transform.Rotate(0,2,0); } if(Input.GetKey("left")) { transform.Rotate(0,-2,0); } } } |
プレーヤーと同じ発射方向
続いて、SphereにつけているTouchObject.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 |
using System.Collections; using System.Collections.Generic; using UnityEngine; public class TouchObject : MonoBehaviour { public GameObject gameObject; public GameObject target; public bool isRelese; public Rigidbody rb; //追加 GameObject cube; //追加 CubeMove ballDir; //追加 void Start() { isRelese = true; rb = GetComponent<Rigidbody>(); //追加 cube = GameObject.Find ("Cube"); //追加 } void Update() { if (Input.GetKeyDown(KeyCode.Space)) { if(!isRelese) { transform.parent = null; isRelese = true; ballDir = cube.GetComponent<CubeMove>(); //追加 rb.velocity = ballDir.direction * 10.0f; //追加 } } } void OnCollisionEnter(Collision col) { if (col.gameObject.name == "Cube") { isRelese = false; this.transform.position = new Vector3(target.transform.position.x, 0.5f, target.transform.position.z); transform.SetParent(gameObject.transform); } } } |
ゲームプレイして、動きを確認します。
Sphereに触れてオブジェクトを持ち、スペースキーで、プレーヤーの方向へ発射します。
プレーヤーの方向を、常時取得しているdirection。
directionを、TouchObject.csのほうで読み込み、ボールの行く方向を、プレーヤーと同じにしています。
前回記事:
①ボールを持つ 取ったオブジェクトを前で持ち続ける
②ボールを置く オブジェクトを持ったり置いたりする
関連記事:
①ボールを持つ 取ったオブジェクトを前で持ち続ける
②ボールを置く オブジェクトを持ったり置いたりする
ターゲットに向かってオブジェクトをぶつける
発射したボールをカーブさせる
落としたボールを1秒後に補充