Menu
CoddyTech

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を掛けてはいけません。

challenge icon

チャレンジ

簡単

速度に応じてヒーローを動かしましょう。

  1. _physics_process()内で、velocityの行の下にmove_and_slide()を追加します。
  2. 上の行と同じように、タブ1つ分インデントします。

「プレイ」を押します。ヒーローは毎秒150ピクセルの速さで右に滑るように進み、柱のところで止まります。その後、「確認」を押します。

自分で試してみよう

extends CharacterBody2D

func _physics_process(delta):
	velocity = Vector2(150, 0)

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

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