Top.Mail.Ru
Ответы

Godot, как исправить код стрельбы, но чтобы строго по горизонтали и вертикали относительно мыши

Хочу сделать top down стрельбу, чтобы игрок поворачивался в направление, в которое стреляет, и чтобы пули выходили строго либо по горизонтале, либо по вертикале. Написала такой код, но пули не появляются. Вот значение двух переменных из скрипта:
var shoot_speed = 20
var bullet1 = preload("res://Unit/bullet_1.tscn")

Переменную direction задать не могу, так как она используется для перемещения персонажа

По дате
По Рейтингу
Аватар пользователя
Оракул
7мес
123456789101112131415161718192021222324252627
 func _input(event): 
    if Input.is_action_just_pressed("shoot1"): 
        var b1 = bullet1.instantiate() 
        get_parent().add_child(b1) # Важно добавить пулю на сцену 
        b1.global_position = global_position # Устанавливаем позицию пули 
         
        var mouse_pos = get_global_mouse_position() 
        var diff = mouse_pos - global_position 
         
        # Определяем преобладающее направление (горизонталь или вертикаль) 
        if abs(diff.x) > abs(diff.y): 
            # Горизонтальное движение 
            if diff.x > 0: 
                b1.linear_velocity = Vector2(1, 0) * shoot_speed 
                rotation = 0 # Поворот вправо 
            else: 
                b1.linear_velocity = Vector2(-1, 0) * shoot_speed 
                rotation = PI # Поворот влево 
        else: 
            # Вертикальное движение 
            if diff.y > 0: 
                b1.linear_velocity = Vector2(0, 1) * shoot_speed 
                rotation = PI/2 # Поворот вниз 
            else: 
                b1.linear_velocity = Vector2(0, -1) * shoot_speed 
                rotation = -PI/2 # Поворот вверх