У меня есть два объекта - needle и bullet. Действие происходит в космосе с видом сверху, needle - это космический корабль, а bullet - торпеда. При нажатии на кнопку E должен происходить выстрел. Я реализовал это так:
spaceship.tscn:
extends KinematicBody2D
const PRELOAD_BULLET=preload("res://Bullet.tscn")
const ACCELERATION = 1200
const ROTATION_SPEED = 1.6
var motion = Vector2.ZERO
func _physics_process(delta):
if Input.is_action_pressed("needle_gas"):
motion+=Vector2.UP.rotated(rotation)*ACCELERATION*delta
if Input.is_action_pressed("needle_turn_right"):
rotation+=ROTATION_SPEED*delta
if Input.is_action_pressed("needle_turn_left"):
rotation-=ROTATION_SPEED*delta
##Здесь основная логика выстрела | |
## V V
if Input.is_action_just_pressed("needle_shoot"):
var bullet=PRELOAD_BULLET.instance()
bullet.position=position+Vector2(0,-72).rotated(rotation)
bullet.rotation=rotation
bullet.SPEED+=motion.lenght()
get_parent().add_child(bullet)
motion=motion.clamped(1800)
var collision = move_and_collide(motion*delta)
if collision!=null:
position=Vector2(192,192)
motion=Vector2.ZERO
bullet.tscn:
extends KinematicBody2D
const SPEED = 180
func _physics_process(delta):
move_and_collide(Vector2.UP.rotated(get_parent().rotation)*delta*SPEED)
Мне нужно, чтобы скорость пули была SPEED+motion.lenght(),
где SPEED = 180 - объявлено в скрипте пули,
а motion.lenght() - текущая скорость корабля, объявлена в скрипте корабля.
Как мне при создании пули задать ей скорость?