Четверг, 19 Декабря 2024, 05:02

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

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

Хочу сразу уточнить что версия моего движка 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
Cr1stal99Дата: Вторник, 17 Декабря 2024, 09:31 | Сообщение # 2 | Тема: Вопрос-Ответ - мини вопросы по созданию игр
уже был
Сейчас нет на сайте
Версии Godot выше чем 4.0 некорректно отображают текст интерфейса и даже окно сцены, видно только диагонально половину. Дело в том, что на четвёртой версии не могу заставить работать Terrain Plugin, куча ошибок с шейдерами какими-то, пробовал даже немного код там править, в общем печально. На 4.2.2. Есть Heightmap Terrain Plugin, работает, но вот после пары запусков или бывает даже сразу, после того как скачаю любую версию выше четвёртой, интерфейс начинает исполнять. Шо делать?

https://imgur.com/a/ujFKJkb
  • Страница 1 из 1
  • 1
Поиск:

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