Pakonigoosy
@Pakonigoosy
Разработчик ПО

Как передать объекту стартовые данные в Godot?

У меня есть два объекта - 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() - текущая скорость корабля, объявлена в скрипте корабля.
Как мне при создании пули задать ей скорость?
  • Вопрос задан
  • 70 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы