Godot заставляет предмет следовать за мышью - PullRequest
0 голосов
/ 25 августа 2018

Я делаю 2D платформер в Godot 3.0, и я хочу, чтобы игрок бросал / стрелял предметами, используя мышь для прицеливания (аналогично лукам и пушкам в Terraria).Как бы я поступил так?Я использую gdscript.

Ответы [ 2 ]

0 голосов
/ 11 сентября 2018

Вы можете использовать look_at() метод (Node2D и Spatial классы) и get_global_mouse_position():

func _process(delta):
    SomeNode2DGun.look_at(get_global_mouse_position())
0 голосов
/ 27 августа 2018

Вычтите вектор положения игрока из положения мыши, и вы получите вектор, который указывает от игрока на мышь.Затем вы можете использовать метод вектора 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), но вы также можете использовать другие типы узлов.Также настройте слои столкновения и маску, чтобы снаряды не сталкивались с игроком.

...