From bf57f94044db38d569ee6a9ef1515821fac39c8c Mon Sep 17 00:00:00 2001 From: Torsten Date: Mon, 4 Mar 2024 16:34:16 +0100 Subject: [PATCH] Godot 2D Vector snippet --- .../04. Steering vector.md | 35 +++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 MyObsidianVault/Godot_Training/2D/Tutorial Game - to space and beyond/04. Steering vector.md diff --git a/MyObsidianVault/Godot_Training/2D/Tutorial Game - to space and beyond/04. Steering vector.md b/MyObsidianVault/Godot_Training/2D/Tutorial Game - to space and beyond/04. Steering vector.md new file mode 100644 index 0000000..0373b1a --- /dev/null +++ b/MyObsidianVault/Godot_Training/2D/Tutorial Game - to space and beyond/04. Steering vector.md @@ -0,0 +1,35 @@ +```python +extends Sprite2D +var direction := Vector2(0,0) +var max_speed := 300.0 +var velocity = Vector2(0, 0) +var boost_speed := 1500.0 +var normal_speed := 300.0 +var desired_velocity := Vector2() +var steering_factor := 10 + +func _process(delta: float) -> void: + var direction := Vector2(0, 0) + direction.x = Input.get_axis("move_left", "move_right") + direction.y = Input.get_axis("move_up", "move_down") + + if direction.length() > 1.0: + direction = direction.normalized() + + if Input.is_action_just_pressed("boost"): + max_speed = boost_speed + get_node("Timer").start() + + desired_velocity = max_speed * direction + var steering = desired_velocity - velocity + + velocity += steering * steering_factor * delta + position += velocity * delta + + if direction.length() > 0.0: + rotation = velocity.angle() + + +func _on_timer_timeout() -> void: + max_speed = normal_speed +``` \ No newline at end of file