С жёсткого на мягкое
Всем привет, пора вернуться на путь геймдева, теперь у нас есть всё, чтобы можно было удобно вести разработку и отправлять тестировщиками билды.
Итак, интерполированная камера в годо, на самом деле механизм очень простой, мы копируем текущее положение корабля и применяем его к камере с интерполяцией(сглаживанием перемещения) новой позиции.
Мы имеем:
Но странность, с которой я столкнулся, камера повернута назад(в сторону уменьшения координаты Z), а корабль повернут вперед(что правильно), поэтому сначала я пытался повернуть базис камеры на 180 градусов по оси Y, что дало инвертирование положение камеры и корабля.
Как исправить? А исправить достаточно просто, нужно пойти от обратного, убрать поворот базиса и просто повернуть саму меш модель корабля на 180, и чтобы исправить косяк с тем, что корабль летит в минусовые координаты нужно ещё сам объект игрока повернуть тоже на 180.
Потом закидываем в скрипт камеры следующий код:
extends Camera export (Vector3) var shift = Vector3(0, 3, 6) #Сдвиг камеры(я сделал вид чуть назад и над кораблём export (int) var smooth = 4 #С какой скоростью будет происходит возврат в заданное положение камеры, относительно корабля onready var player = quot;../Player" #Ссылка на объект игрока func _ready(): make_current() #Делаем камеру текущий(у меня есть камера для вида от 1 лица чуть в объекте игрока) global_transform = get_new_trans() #Применяем заданное положение, если этого не сделать, то при запуске игры камера будет из нулевых координат перемещаться к заданным func get_new_trans(): #Для удобства модификации сделал отдельную функцию получения координат игрока return player.global_transform.translated(shift) #Получем глобальные координаты игрока и сдвигаем их func _process(delta): global_transform = global_transform.interpolate_with(get_new_trans(), delta*smooth) #Применяем к текущим координатам камеры интерполированное значение конечной точки, #и движок сам нам расчитает где нужно находится камере, исходя их текущего положения и необходимого, учитывая скорость
И всё, и получаем результат, который нас устраивает. В годо всё делается просто, а если кажется, что сложно, то это временно)
Задавайте вопросы, предлагайте темы для статей, удачного геймдева!