プレーヤーの移動中、一定の距離まで近づくと引力が働くような仕組みを作ってみましょう。
Cubeを操作してSphereに近づくと、引力によって引っ張られて、動きが遅くなります。
関連記事:
3D空間でプレーヤーを追いかけるオブジェクト
進行方向に傾きながら移動
重力に逆らって上昇する
引力で引っ張られる動き
CubeとSphereを作成して、距離をとります。
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 30 31 32 |
using System.Collections; using System.Collections.Generic; using UnityEngine; public class CubeMove : MonoBehaviour { public GameObject target; private float gravity; void Start() { gravity = 0.05f; } void Update() { float moveX = Input.GetAxis("Horizontal") * Time.deltaTime * 5.0f; float moveZ = Input.GetAxis("Vertical") * Time.deltaTime * 5.0f; transform.position = new Vector3 ( transform.position.x + moveX, 0, transform.position.z + moveZ); Vector3 cube = this.gameObject.transform.position; Vector3 sphere = target.transform.position; float distance = Vector3.Distance(cube,sphere); if(distance < 5.0f) { transform.LookAt(target.transform); transform.position += transform.forward * gravity; } } } |
ここでは引力の数値を、0.05に設定しています。
ターゲットのフィールドに、Sphereを入れましょう。
ゲームプレイして、十字キーでCubeを操作してみましょう。
Sphereとの距離が5.0以下まで近づくと、引力が働いて動きづらくなります。