Четверг, 19 Декабря 2024, 06:44

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Реализация интуитивной камеры в Godot 4.0
Cr1stal99Дата: Вторник, 17 Декабря 2024, 20:17 | Сообщение # 1
уже был
Сейчас нет на сайте
Прошу прощения, если я вдруг создал тему не там где нужно, я тут совсем недавно

Хочу сразу уточнить что версия моего движка Godot 4.0 и я не могу перейти на версию выше, потому-что там какие-то проблемы с отображением интерфейса, текст отображается криво, видно только половину диагонально, сцена точно также - видно только половину по диагонали.

Уважаемые игроделы, перед тем как написать на форум, я правда долго пытался решить проблему сам, ну как сам, с помощью искусственного интеллекта и видео уроков, буду честен, я не имею опыта и знаний, но загорелся желанием создать относительно простую 3D игру с 2D пиксельными персонажами (2.5D). Мне удалось добавить в сцену анимированного персонажа, настроить управление и смену анимации, добавил в сцену три стены (ноды типа StaticBody в ветке которых есть MeshInstence и CollisionShade) для экспериментов с камерой и сижу теперь ломаю голову, пытаясь настроить камеру так, чтобы проходя мимо препятствий камера приближалась и возвращалась в обратное положение когда препятствий нет. Сначала я думал о том, что это понадобится для того, чтобы персонаж имел возможность войти внутрь здания, а потом понял, что интуитивная камера должна быть в моём проекте в любом случае, так как свободного осмотра камерой я делать пока не буду и в таком случае персонаж будет постоянно теряться за зданиями в сцене. У меня есть RayCast3D, он является дочерним нодом для Camera3D. Отладчик абсолютно молчит, никаких ошибок, но камера не реагирует вообще и двигается так, как двигалась раньше, то-есть только в зависимости от передвижения персонажа, так как камера является дочерней ему. Вот код который висит на камере:

extends Camera3D

@export var target: CharacterBody3D # Узел, к которому привязана камера (например, персонаж)
@export var min_distance: float = 2.0 # Минимальная дистанция камеры до цели
@export var max_distance: float = 10.0 # Максимальная дистанция камеры до цели
@export var camera_speed: float = 5.0 # Скорость перемещения камеры

var current_distance: float = max_distance # Текущая дистанция
var raycast: RayCast3D # RayCast для проверки препятствий

func _ready():
# Создаём и настраиваем RayCast3D
raycast = RayCast3D.new()
add_child(raycast)
raycast.collide_with_areas = true
raycast.collide_with_bodies = true

func _physics_process(delta):
if not target:
return

# Направляем RayCast от камеры к цели
var target_position = target.global_position
var camera_direction = (global_position - target_position).normalized() # Направление от камеры к цели

# Обновляем RayCast с расчётом позиции камеры
raycast.global_position = global_position
raycast.target_position = target_position # Луч должен идти от камеры к цели

# Проверяем, сталкивается ли луч с препятствием
if raycast.is_colliding():
# При столкновении с препятствием - уменьшаем дистанцию камеры
var collision_point = raycast.get_collision_point()
var distance_to_collision = (collision_point - target_position).length()
current_distance = lerp(current_distance, max(min_distance, distance_to_collision), camera_speed * delta)
else:
# Если препятствий нет, возвращаем дистанцию к максимальному значению
current_distance = lerp(current_distance, max_distance, camera_speed * delta)

# Обновляем позицию камеры
global_position = target_position - camera_direction * current_distance
look_at(target_position) # Ориентируем камеру на цель

Прошу помощи у вас, те, кто читает этот пост, буду очень благодарен. Спасибо за внимание

Прикреплю пару скриншотов, чтобы было чуть более широкое представление о проекте
Ссылка на imgur: https://imgur.com/a/TpOoUvd

P.S. На данный момент попробовал установить плагин высоконастраиваемой камеры, много ошибок, не работает как надо. Удалось настроить сближение и отдаление с помощью ArmSpring3D но камера слегка дёргается когда отдаляется или сближается


Сообщение отредактировал Cr1stal99 - Вторник, 17 Декабря 2024, 21:53
  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг