Menu
CoddyTech

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.

challenge icon

Aufgabe

Mittel
  1. Füge const BULLET = preload("res://bullet.tscn") hinzu.
  2. Wenn die Taste action gerade gedrückt wird, erstelle ein Geschoss 18 Pixel vor dem Raumschiff mit der rotation des 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
quiz iconTeste dich selbst

Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.

Alle Lektionen in Projekte

Übe selbstständig: Godot-Playground