Geschosse abfeuern
Teil des Abschnitts Projekte der Godot-Journey von Coddy. Lektion 13 von 33.
E oder Enter (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 Parent des Schiffs hinzu. Ein Child bewegt und dreht sich mit seinem Parent, daher würde eine Kugel auf dem Schiff mit ihm schwingen.
is_action_just_pressed ist nur in dem Frame true, in dem die Taste gedrückt wird. Jeder Tastendruck feuert eine Kugel ab.
Aufgabe
Mittel- Füge
const BULLET = preload("res://bullet.tscn")hinzu. - Wenn die Taste
actiongerade gedrückt wird, erstelle ein Geschoss 18 Pixel vor dem Raumschiff mit derrotationdes Raumschiffs und füge es dem übergeordneten Knoten des Raumschiffs hinzu.
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
Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Alle Lektionen in Projekte
2Projekt: Asteroiden-Shooter
Das Schiff drehenDen Antrieb zündenÜbe selbstständig: Godot-Playground