エンジンを噴かす
CoddyのGodotジャーニー「プロジェクト」セクションの一部。レッスン 12/36。
上を押すとエンジンが作動し、船首が向いている方向へ船を押します。Vector2.UP は (0, -1) です。rotated(rotation) は、船が回転した角度だけこの矢印を回転させます。
if Input.is_action_pressed("move_up"):
velocity += Vector2.UP.rotated(rotation) * THRUST * delta
position += velocity * deltaエンジンが変えるのは位置ではなく、速度です。上を押すのをやめても、船はそのまま漂い続けます。止まるには、反対方向に向きを変えて推進します。
船には非表示の子ノードFlameがあります。エンジンの作動中に表示します。$Flame.visible = Input.is_action_pressed("move_up")。
チャレンジ
中級エンジンで船を推進させましょう。
const THRUST = 300を追加します。- 上キーを押している間、
Vector2.UP.rotated(rotation) * THRUST * deltaをvelocityに加えます。 - 上キーを押しているかどうかにかかわらず、毎フレーム
velocity * deltaで船を移動させます。 - 上キーを押している間だけ
$Flameを表示します。
「プレイ」を押して上キーを押し続けます。炎が燃え、キーを離した後も船は滑るように進みます。それから「確認」を押します。
自分で試してみよう
extends CharacterBody2D
const TURN_SPEED = 4.0
func _physics_process(delta):
rotation += Input.get_axis("move_left", "move_right") * TURN_SPEED * delta
プロジェクトのすべてのレッスン
自分で練習してみよう: Godotプレイグラウンド