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.
Défi
Moyen- Ajoute
const BULLET = preload("res://bullet.tscn"). - Lorsque la touche
actionvient d’être enfoncée, crée un projectile à 18 pixels devant le vaisseau, avec larotationdu 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
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
2Projet : jeu de tir d’astéroïdes
Faire tourner le vaisseauMettre le moteur en marcheEntraînez-vous par vous-même : Playground Godot