壁にぶつかると止まる
CoddyのGodotジャーニー「入力と移動」セクションの一部。レッスン 9/28。
壁と柱はStaticBody2Dノードです。静的ボディは動きません。それぞれに、固体の形状を定めるCollisionShape2Dと、描画するためのColorRectがあります。
壁を確認するのはmove_and_slide()だけです。positionを変更すると確認せずにボディが移動するため、壁を通り抜けます。
position.x += direction * speed * delta # 壁をすり抜ける
velocity.x = direction * speed # 壁に阻まれる
move_and_slide()#の後のテキストはコメントです。Godotはこれを無視します。
壁に斜めにぶつかったボディは、壁に沿った移動を続けます。止まるのではなく滑るため、move_and_slide()という名前が付いています。
チャレンジ
簡単壁がヒーローを止めるようにしましょう。
position.xの行を、deltaを使わずにvelocity.xをdirection * speedに設定する行に置き換えます。- その下に
move_and_slide()を呼び出します。
「プレイ」を押して、両方向に歩いてみましょう。柱と壁がヒーローを止めます。その後、「確認」を押します。
自分で試してみよう
extends CharacterBody2D
var speed = 200
func _physics_process(delta):
var direction = Input.get_axis("move_left", "move_right")
position.x += direction * speed * delta
入力と移動のすべてのレッスン
自分で練習してみよう: Godotプレイグラウンド