Вычтите вектор положения игрока из положения мыши, и вы получите вектор, который указывает от игрока на мышь.Затем вы можете использовать метод вектора angle
, чтобы установить угол снарядов, нормализовать вектор и масштабировать его до желаемой длины, чтобы получить скорость.
extends KinematicBody2D
var Projectile = preload('res://Projectile.tscn')
func _ready():
set_process(true)
func _process(delta):
# A vector that points from the player to the mouse position.
var direction = get_viewport().get_mouse_position() - position
if Input.is_action_just_pressed('ui_up'):
var projectile = Projectile.instance() # Create a projectile.
# Set the position, rotation and velocity.
projectile.position = position
projectile.rotation = direction.angle()
projectile.vel = direction.normalized() * 5 # Scale to length 5.
get_parent().add_child(projectile)
Я использую KinematicBody2D
как сценарий Projectile.tscn
в этом примере и переместите ее с помощью move_and_collide(vel)
, но вы также можете использовать другие типы узлов.Также настройте слои столкновения и маску, чтобы снаряды не сталкивались с игроком.