Menu
CoddyTech

おさらい:二段ジャンプ

CoddyのUnityジャーニー「本格的なゲームを作る」セクションの一部。レッスン 43/60。

この章では、CharacterControllerを手動で動かしました。歩行にはMoveを使い、重力はフィールドに保持し、ジャンプの高さからジャンプの動きを計算しました。主人公は空中でもう一度ジャンプできます。

challenge icon

チャレンジ

中級

ヒーローにジャンプと空中ジャンプを1回できるようにします。歩行処理は記述済みです。

  1. まず、接地している間は、airJumpUsed = falseにし、落下中のverticalSpeedを-2fにします。
  2. Input.GetButtonDown("Jump")のとき、接地していればverticalSpeed = Mathf.Sqrt(jumpHeight * -2f * gravity);を実行します。そうでなく、!airJumpUsedなら、airJumpHeightを使って同様にし、airJumpUsedを設定します。
  3. 次に、gravity * Time.deltaTimeをverticalSpeedに加えます。

「プレイ」を押して、二段ジャンプで足場に乗りましょう。その後、「確認」を押してください。

自分で試してみよう

using UnityEngine;

public class Hero : MonoBehaviour
{
    public float speed = 5f;
    public float gravity = -25f;
    public float jumpHeight = 2f;
    public float airJumpHeight = 1.28f;

    CharacterController controller;
    float verticalSpeed;
    bool airJumpUsed;

    void Start()
    {
        controller = GetComponent<CharacterController>();
    }

    void Update()
    {
        // 地面にいるときにリセットし、Spaceでジャンプまたは空中ジャンプしてから、重力を加える

        Vector3 move = new Vector3(Input.GetAxisRaw("Horizontal"), 0f, Input.GetAxisRaw("Vertical")) * speed;
        move.y = verticalSpeed;
        controller.Move(move * Time.deltaTime);
    }
}
quiz icon腕試し

このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。

本格的なゲームを作るのすべてのレッスン

自分で練習してみよう: Unityプレイグラウンド