Моя первая игра на движке Godo4 Код движения персонажа по клику мыши вид сверку

 Этот код реализует движение игрового объекта к позиции курсора мыши. Объект начинает двигаться, когда игрок нажимает левую кнопку мыши, и останавливается, когда приближается к целевой позиции на расстояние меньше stop_radius. Скорость движения регулируется переменной speed, а плавность движения достигается с помощью времени кадра delta.



extends KinematicBody2D

# KinematicBody2D - это тип узла, который используется для объектов, которые могут двигаться и взаимодействовать с физическим миром.


export var speed = 200

# Переменная 'speed' определяет скорость движения объекта. Значение 200 можно изменить в редакторе.


export var stop_radius = 5

# Переменная 'stop_radius' определяет радиус, в котором объект должен остановиться около целевой позиции. Значение 5 можно изменить в редакторе.


var target_position = Vector2()

# Переменная 'target_position' хранит целевую позицию, к которой должен двигаться объект.


var is_moving = false

# Переменная 'is_moving' отслеживает, двигается ли объект или нет.


func _process(delta):

    # Функция '_process' вызывается каждый кадр игры.

    # 'delta' - это время, прошедшее с предыдущего кадра (используется для сглаживания движения).

    if is_moving:

        # Если объект движется, вызывается функция 'move_to' с целевой позицией и временем кадра 'delta'.

        move_to(target_position, delta)


func _input(event):

    # Функция '_input' вызывается, когда происходит событие ввода (например, нажатие кнопки мыши).

    if event is InputEventMouseButton and event.button_index == BUTTON_LEFT and event.pressed:

        # Если левая кнопка мыши была нажата, то:

        target_position = event.position

        # Целевая позиция устанавливается на позицию курсора мыши.

        is_moving = true

        # Переменная 'is_moving' устанавливается в true, чтобы объект начал двигаться.


func move_to(target: Vector2, delta: float) -> void:

    # Функция 'move_to' перемещает объект к целевой позиции.

    var direction = (target - position).normalized()

    # Вектор 'direction' указывает направление от текущей позиции объекта к целевой позиции.

    var velocity = direction * speed * delta

    # Вектор 'velocity' представляет скорость движения объекта, учитывая время кадра 'delta'.

    var distance = velocity.length()

    # Расстояние, на которое объект должен переместиться в этом кадре.


    if distance > 0:

        # Если расстояние больше нуля (объект еще не достиг цели), то:

        var offset = position.direction_to(target) * distance

        # Вектор 'offset' указывает направление и расстояние, на которое объект должен переместиться.

        position += offset

        # Обновляем позицию объекта, добавляя 'offset'.

        rotation = direction.angle()

        # Обновляем вращение объекта, чтобы он был повернут в направлении движения.


        if position.distance_to(target) < stop_radius:

            # Если расстояние от текущей позиции объекта до целевой позиции меньше 'stop_radius', то:

            is_moving = false

            # Устанавливаем 'is_moving' в false, чтобы остановить движение.

    else:

        is_moving = false

        # Если расстояние равно нулю (объект достиг цели), устанавливаем 'is_moving' в false.

Скачать код (пройдите простую капчу от catcut это принесет мне хоть какую то копейку )



Комментарии