Полезное

Мы Вконтакте

Discord канал

#
Модератор: icms
Аватара пользователя
Пользователь
Сообщения: 75
Здравствуйте! Есть актер, который движется произвольно, но бывает так, что он выходит за пределы экрана. Подскажите, пожалуйста, способ этого избежать?

Я не хочу использовать коллизии, что бы столкновения не просчитывались через них.
Аватара пользователя
Пользователь
Сообщения: 589
viewtopic.php?f=3&t=5533

Но есть один проблема.
Коллизия работает жестко.
А вот через математические вычисления работает как бы мягко.
Можно выдавить персонажа за пределы экрана.
Аватара пользователя
Пользователь
Сообщения: 75
Тут дела не в самом персонаже. Есть отдельный маленький актер, который движется, сравнимо с молекулой, хаотично. Коллизии он не имеет, а все столкновения просчитываются через вектора. Да и столкновений как таковых там нет, просто пересечения друг с другом.

Кажется Я нашел способ по проще:
- создать отдельный актор с кубической коллизией(платформой) и подогнать её под размер экрана. Это и будет наши рамки, за которые нельзя выходить
- эту платформу разбить на ячейки
- актор при движении будет использовать координаты любой выбранной ячейки

Здесь есть минусы. Первый, актеры могут выбрать одну ячейку. Для меня это не критично, но выглядеть будет не очень. Второй, актер будет преодолевать просто огромное расстояние. А это для меня уже не приемлемо. Как можно заставить его использовать ячейки рядом с собой?
Аватара пользователя
Пользователь
Сообщения: 469
Блин перечитал два раза, задачу не понял. Может визуально изобразите?
_________________
Project SKIT
Аватара пользователя
Пользователь
Сообщения: 4069
тут даже не указано каким способом задается движение
Аватара пользователя
Пользователь
Сообщения: 75
Про ячейки и всё такое разбиралось тут

https://uengine.ru/forum/viewtopic.php?f=3&t=75198

Первоначально перемещение было так:

Изображение

Само собой из за такого рандома актор мог уйти за пределы вселенной.

Сейчас это выглядит так:

Изображение

Движения идет по зеленым квадратам, берутся координаты одного из них и актор движется туда. Опять же, с того края актор может ломануться на другой край со скоростью света.
Аватара пользователя
Пользователь
Сообщения: 4069
1. Определить минимальный и максимальный X и Y. это лимиты - константы.
2. Определить разницу между текущим положением актора, и лимитами константами, полученные данные это динамические лимиты.

Их использовать как clamp для рандома.

Очень грубо, но примерно это должно выглядеть так, что от чего отнимать, это ты уже и методом тыка можешь разобраться, мне думать и проверять лень.
https://picua.org/images/2020/10/07/05c ... 251c5d.png

по второму вопросу, если хочешь что бы актор двигался всегда с одной скоростью, нужно использовать ноду Lerp. Скорость должна быть зависимой от растояния, вот так пользоваться лерпом.
https://picua.org/images/2020/10/07/e7b ... dd1b76.jpg

Обрати внимание, главное отличие лерпа от интерпа, тем что к А подключается заранее определенное число, а не текущее положение актора.
Хотя это число должно являться текущим положением актора до начала лерпа

Что бы скорость была зависимой от расстояния, это можно сделать подобным образом - https://picua.org/images/2020/10/07/5ce ... 3c47a8.jpg

также ты можешь направлять актора случайно сразу от цента твоего экрана, например твой центр в 0, это будет выглядеть так - https://picua.org/images/2020/10/07/c14 ... 14fc96.jpg
если использовать указанные выше приемы(лерп и мап), это один из лучших(простых) вариантов, ты сразу укажешь нужные лимиты и этого будет достаточно.


Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 17

UEngine.ru © 2017
Все права защищены. При копировании материалов с сайта, ссылка на первоисточник обязательна.
Яндекс.Метрика
Главная страница