Моя первая игра на движке 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 это принесет мне хоть какую то копейку )

Комментарии
Отправить комментарий