Geschosse abfeuern
Teil des Abschnitts Projekte der Godot-Journey von Coddy. Lektion 14 von 36.
E oder Eingabetaste (die Taste action) feuert eine Kugel ab. Eine Kugel ist eine Szene, bullet.tscn. Ihr eigenes Skript lässt sie nach vorne fliegen und entfernt sie nach 0.8 Sekunden. Das Schiff erzeugt eine Kugel an seiner Spitze, richtet sie in dieselbe Richtung aus und fügt sie dem Spiel hinzu:
if Input.is_action_just_pressed("action"):
var bullet = BULLET.instantiate()
bullet.position = position + Vector2.UP.rotated(rotation) * 18
bullet.rotation = rotation
get_parent().add_child(bullet)Füge die Kugel dem übergeordneten Objekt des Schiffs hinzu. Ein untergeordnetes Objekt bewegt und dreht sich mit seinem übergeordneten Objekt, daher würde eine Kugel auf dem Schiff mit ihm mitschwingen.
is_action_just_pressed ist nur in dem Frame wahr, in dem die Taste gedrückt wird. Jeder Tastendruck feuert eine Kugel ab.
Aufgabe
MittelFeuere mit E eine Kugel ab.
- Füge
const BULLET = preload("res://bullet.tscn")hinzu. - Wenn
actiongerade gedrückt wird, erzeuge eine Kugel 18 Pixel vor dem Schiff mit derrotationdes Schiffs. - Füge sie mit
get_parent().add_child(bullet)dem übergeordneten Knoten des Schiffs hinzu.
Drücke auf „Spielen“ und drücke E: Eine Kugel fliegt aus der Spitze. Klicke dann auf „Prüfen“.
Probier es selbst
extends CharacterBody2D
const TURN_SPEED = 4.0
const THRUST = 300
func _physics_process(delta):
rotation += Input.get_axis("move_left", "move_right") * TURN_SPEED * delta
if Input.is_action_pressed("move_up"):
velocity += Vector2.UP.rotated(rotation) * THRUST * delta
$Flame.visible = Input.is_action_pressed("move_up")
position += velocity * delta
if position.x < 0:
position.x += 640
if position.x > 640:
position.x -= 640
if position.y < 0:
position.y += 360
if position.y > 360:
position.y -= 360
Alle Lektionen in Projekte
Übe selbstständig: Godot-Playground