Menu
CoddyTech

Tirer des projectiles

Fait partie de la section Projets du Journey Godot de Coddy. Leçon 13 sur 33.

E ou Entrée (la touche action) tire une balle. Une balle est une scène, bullet.tscn. Son propre script la propulse vers l’avant et la supprime après 0.8 seconde. Le vaisseau en crée une à sa proue, l’oriente dans la même direction et l’ajoute au jeu :

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)

Ajoute la balle au parent du vaisseau. Un enfant se déplace et pivote avec son parent, donc une balle attachée au vaisseau oscillerait avec lui.

is_action_just_pressed est vrai uniquement pendant la frame où la touche s’enfonce. Chaque pression tire une balle.

challenge icon

Défi

Moyen
  1. Ajoute const BULLET = preload("res://bullet.tscn").
  2. Lorsque la touche action vient d’être enfoncée, crée un projectile à 18 pixels devant le vaisseau, avec la rotation du vaisseau, puis ajoute-le au parent du vaisseau.

Essayez vous-même

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 iconTestez-vous

Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.

Toutes les leçons de Projets

Entraînez-vous par vous-même : Playground Godot