ターゲットのオブジェクトに触れると、プレーヤーの前方で保持できるしくみを作ってみましょう。
Cube(プレーヤー)を操作して、Sphere(アイテム)を取ります。
取ったSphereを、プレーヤーの前で持ち続けます。
その後も、アイテムを持ったまま、動かすことができます。
次回記事:
②ボールを置く オブジェクトを持ったり置いたりする
③ボールを飛ばす 保持したボールをプレーヤーと同じ向きで発射
プレーヤーを作成
PlaneとCubeを作成します。
Cubeにリジッドボディを追加し、地上に出るように配置します。
わかりやすいように、マテリアルでカラーをつけます。
Sphereを作成し、名前をTargetに変更。
位置とサイズを変更して、Cubeの前に来るように配置します。
シーンビューではこのように見えています。
Targetをドラッグ&ドロップでCubeの中に入れて、親子関係をつくります。
Targetを透明にしましょう。
Toumeiという名前でマテリアルを作成し、レンダリングモードをFadeに変更。
Aの値を0にします。
Toumeiを、Targetに追加して、透明に変えます。
プレーヤーを動かせるように、スクリプトをつくりましょう。
CubeMove.csを作成し、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 |
using System.Collections; using System.Collections.Generic; using UnityEngine; public class CubeMove : MonoBehaviour { void Update() { 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オブジェクトを作成します。
Sphereを作成し、マテリアルカラーをつけて、位置を変更します。
このように配置されています。
TouchObject.csを作成し、Sphereに追加します。
TouchObject.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 TouchObject : MonoBehaviour { public GameObject gameObject; public GameObject target; void OnCollisionEnter(Collision col) { if (col.gameObject.name == "Cube") { this.transform.position = new Vector3(target.transform.position.x, 0.5f, target.transform.position.z); transform.SetParent(gameObject.transform); } } } |
ゲームオブジェクトのフィールドに、Cubeを入れます。
ターゲットのフィールドに、Targetを入れます。
ゲームプレイして、Sphereを取りにいきましょう。
Sphereが、Targetと同じ座標に移動してから、Cubeの子オブジェクトになります。
一度Sphereに触れると、その後の動きでも、前方で保持しながらくっついて動きます。
次回は、保持したオブジェクトを置く仕組みを作ります。
次回記事:
②ボールを置く オブジェクトを持ったり置いたりする
③ボールを飛ばす 保持したボールをプレーヤーと同じ向きで発射
関連記事:
落としたボールを1秒後に補充
オブジェクトを持ったり置いたりする
保持したボールをプレーヤーと同じ向きで発射
静止中のオブジェクトをクリックで飛ばす
出現してから1秒後に落下する
落下スピードをランダムにする