Unityをスクリプトで動かしたい!

Unityでオブジェクトを操作する方法を紹介してます!

Unityジャンプの実装(動画あり)

今回はジャンプの実装を紹介します。

~
public class Jump : MonoBehaviour
{
    [SerializeField]
    bool JumpFlag;          //ジャンプ中にたてる
    [SerializeField]
    float Gravity;          // 重力
    [SerializeField]
    float JumpPow;          // ジャンプ力
    float StartTime;        //ジャンプし始めの時間を入れる

    // Start is called before the first frame update
    void Start()
    {
        JumpFlag = false;
    }

    // Update is called once per frame
    void Update()
    {
        if(!JumpFlag)
        {
            if(Input.GetKey(KeyCode.Space))
            {
                JumpFlag = true;
                StartTime = Time.time;  //ゲーム開始からの時間を入れる
            }
        }
        else
        {
            PlayerGravity(Gravity); // 重力
            PlayerJump(JumpPow);    // ジャンプ
            PlayerLand();           // 着地処理
        }
    }
    //重力移動
    void PlayerGravity(float _Gravity)
    {
        //落下量=滞空時間×加速度(-重力)
        //重力の力を時間が経つにつれて強くする
        var YAxis = (Time.time-StartTime) * (-1 * _Gravity * Time.deltaTime);
        //重力の移動
        transform.position += new Vector3(0, YAxis, 0);
    }
    //ジャンプ
    void PlayerJump(float _JumpPower)
    {
        var YAxis = _JumpPower * Time.deltaTime;
        //重力を考えないで上に行く処理のみ
        transform.position += new Vector3(0, YAxis, 0);
    }
    //着地の判定
    void PlayerLand()
    {
        //今回は高さが0以下になった場合
        if(transform.position.y<=0)
        {
            JumpFlag = false;
        }
    }
}
~

f:id:SugieSan:20210220181203g:plain

ジャンプをさせたいオブジェクトにアタッチをして

  • Gravity(重力の大きさ)
  • JumpPow(ジャンプ力)

の数値を入れれば動きます。

着地はY軸(高さ)が0以下になったらという条件にしてますが、コライダーやスクリプトで当たり判定をすると段差でのジャンプも可能です。