A cookbook for Godot games :robot:
This project is maintained by Beelzenef
Creando nuestro tanque, con una jerarquía de nodos como se expone:
Tank
\__ Body
\__ Turret
\__ Muzzle
\__ Timer
\__ CollisionShape2D
Utilizando gráficos de Kenney2D:
El código, simplificado y en un único script, se visualiza así:
extends KinematicBody2D
export (int) var health
export (int) var speed
export (float) var rotation_speed
var velocity = Vector2()
var alive = true
# magic goes here!
func _ready():
pass
func control(delta):
var rot_dir = 0
if Input.is_action_pressed("ui_right"):
rot_dir += 1
if Input.is_action_pressed("ui_left"):
rot_dir -= 1
rotation += rotation_speed * rot_dir * delta
velocity = Vector2()
if Input.is_action_pressed("ui_up"):
velocity = Vector2(speed, 0).rotated(rotation)
if Input.is_action_pressed("ui_down"):
velocity = Vector2(-speed/2, 0).rotated(rotation)
func _physics_process(delta):
if not alive:
return
control(delta)
move_and_slide(velocity)
Si comenzamos a aplicar herencia, cada escena y cada script implementa solo lo que necesita de forma específica. Los valores iniciales para las variables exportadas pueden ser:
Variable | Valor |
---|---|
health |
3 |
speed |
100 |
rotation speed |
5 |