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

チャレンジ

簡単

壁がヒーローを止めるようにしましょう。

  1. position.xの行を、deltaを使わずにvelocity.xをdirection * speedに設定する行に置き換えます。
  2. その下に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プレイグラウンド