クリックした方向にむかって、ジャンプできる仕組みをつくってみましょう。
3Dで作成する場合、マウスクリックの位置はScreenToWorldPointを使って、スクリーン座標をワールド座標に変換させます。
関連記事:
着地していればジャンプ可能
キャラクターをジャンプさせるしくみ
ジャンプした距離を表示する
ジャンプで壁に触れると引っ付く
ダブルジャンプの仕組み
ジャンプの方向をランダムにする
マウス長押しでジャンプ力を溜める
クリック位置に向かってジャンプ
平面とCubeを作成します。
CubeのY座標を0.5にして、リジッドボディを追加します。
Cubeにわかりやすい色をつけます。
シーンビューではこのように配置されています。
Cubeがひっくり返らないように、回転を固定します。
リジッドボディのConstraintsを展開し、回転を固定にチェックを入れます。
CubeJump.csを作成し、Cubeに追加します。
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 CubeJump : MonoBehaviour { private Rigidbody rb; private int upForce; private Vector3 mousePosition; private Vector3 objPosition; void Start() { rb = GetComponent<Rigidbody>(); upForce = 300; } void Update() { if(Input.GetMouseButtonDown(0)) { mousePosition = Input.mousePosition; mousePosition.z = 10.0f; objPosition = Camera.main.ScreenToWorldPoint(mousePosition); rb.AddForce(new Vector3(objPosition.x*20, upForce, 0)); } } } |
ゲームプレイしてみましょう。
左クリックのタイミングで、マウス位置をワールド座標に変換。
upForceの数値分、Y方向へ力を加えてジャンプします。
それと同時に、クリックのX位置に20を掛けた数値分、X方向へ向けます。
3Dビューなので、クリック位置のZ座標は、10で固定しています。
関連記事:
着地していればジャンプ可能
キャラクターをジャンプさせるしくみ
ジャンプした距離を表示する
ジャンプで壁に触れると引っ付く
ダブルジャンプの仕組み
ジャンプの方向をランダムにする
マウス長押しでジャンプ力を溜める