Menu
CoddyTech

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.

challenge icon

Aufgabe

Mittel

Feuere mit E eine Kugel ab.

  1. Füge const BULLET = preload("res://bullet.tscn") hinzu.
  2. Wenn action gerade gedrückt wird, erzeuge eine Kugel 18 Pixel vor dem Schiff mit der rotation des Schiffs.
  3. 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