CharacterBody2D
CoddyのGodotジャーニー「入力と移動」セクションの一部。レッスン 7/28。
Node2Dは壁を通り抜けます。CharacterBody2Dは物にぶつかります。Sceneタブでは、Heroは現在CharacterBody2Dになっています。その子ノードであるCollisionShape2Dは円形で、ヒーローの当たり判定の大きさを表します。壁と柱にも当たり判定の形状があります。
ボディは、1秒あたりのピクセル数で表すVector2のvelocityを持っています。これを設定しても、何も動きません。move_and_slide()は1フレームの間、ボディをその速度で動かし、固いものにぶつかると停止させます。
func _physics_process(delta):
velocity = Vector2(150, 0)
move_and_slide()物理演算と同期して実行される_physics_processでボディを動かします。move_and_slide()がフレームの時間を適用するため、velocityにdeltaを掛けてはいけません。
チャレンジ
簡単速度に応じてヒーローを動かしましょう。
_physics_process()内で、velocityの行の下にmove_and_slide()を追加します。- 上の行と同じように、タブ1つ分インデントします。
「プレイ」を押します。ヒーローは毎秒150ピクセルの速さで右に滑るように進み、柱のところで止まります。その後、「確認」を押します。
自分で試してみよう
extends CharacterBody2D
func _physics_process(delta):
velocity = Vector2(150, 0)
入力と移動のすべてのレッスン
自分で練習してみよう: Godotプレイグラウンド