壁にぶつかると止まる
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()という名前が付いています。
チャレンジ
簡単このヒーローは柱や壁をすり抜けてしまいます。velocityと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プレイグラウンド