Menu
CoddyTech

壁にぶつかると止まる

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()という名前が付いています。

challenge icon

チャレンジ

簡単

このヒーローは柱や壁をすり抜けてしまいます。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
quiz icon腕試し

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

入力と移動のすべてのレッスン

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