可変ジャンプ
CoddyのGodotジャーニー「入力と移動」セクションの一部。レッスン 16/28。
多くのプラットフォーマーでは、ボタンを軽く押すと小さく跳び、押し続けると大きくジャンプします。
これを実現するには、ボタンを離したときにジャンプを中断します。Input.is_action_just_released("jump")は、キーを離した瞬間の1フレームだけtrueになります。そのときヒーローがまだ上昇中なら、上向きの速度を半分にします。
if Input.is_action_just_released("jump") and velocity.y < 0:
velocity.y = velocity.y / 2velocity.y < 0は、ヒーローがまだ上昇中であることを意味します。この条件がないと、下降中にキーを離したときに落下速度が遅くなります。
ジャンプの頂点を過ぎるまでキーを押し続ければ、ジャンプは中断されません。
チャレンジ
中級ジャンプを短くタップすると、小さく跳ねるようにします。
- ジャンプの
ifの後に、Input.is_action_just_released("jump")とvelocity.y < 0を条件とするifを追加します。 - その中で、
velocity.yを半分にします。
「プレイ」を押します。Spaceを素早くタップすると小さく跳ね、押し続けると最大の高さまでジャンプします。その後、「確認」を押します。
自分で試してみよう
extends CharacterBody2D
var speed = 220
var gravity = 1000
var jump_velocity = -500
func _physics_process(delta):
velocity.y += gravity * delta
if Input.is_action_just_pressed("jump") and is_on_floor():
velocity.y = jump_velocity
velocity.x = Input.get_axis("move_left", "move_right") * speed
move_and_slide()
入力と移動のすべてのレッスン
自分で練習してみよう: Godotプレイグラウンド