Полезное

Мы Вконтакте

Discord канал

#
Аватара пользователя
Пользователь
Сообщения: 1
Здравствуйте, на разработку игр перешел недавно (раньше на C# софт писал). Выбрал UE4 и пишу на С++. Документацию читал но что то она не зашла. Помогите, есть 3 вопроса.

1. Tick зависит от производительности ПК.
Я понял что эта функция вызывается при каждом кадре и получается что если туда написать код, который например немного поворачивает объект то на разных ПК он будет крутится по разному а иногда даже на одном и том же (когда просадки fps случаются). Теперь внимание, как ркешить эту проблему? Может есть какая то привязка к времени или еще что то.
Код:
FVector NewLocation = GetActorLocation();
NewLocation.Z = NewLocation.Z + 0.2f;
SetActorLocation(NewLocation);


2. Обработчик событий.
Так и не смог найти штуку которая вызывала бы функцию когда например объекты касаются. Или это нужно делать методом: В Tick вставить функцию if которая бы проверяла когда координаты близко? Это как то бредово когда много объектов. В общем вопрос: Как активировать определенную функцию при каком либо событии либо при касании объектов.

3. Обработчик нажатий клавиш
Стандартное управление персонажем в движке понятно. А как реализовать что бы при нажатии определенной клавиши вызывался определенный код, который например не просто управляет персонажем а например меняет мир. Знаю что на Unity есть такая штука которая вставляется в аналог Tick
Код:
if (Input.GetMouseButton(0)) { [i][u]Выполняемый код при нажатии[/u][/i] }

Как это реализовать на Нереальном Двигателе 4?
Аватара пользователя
Администратор
Сообщения: 1581
1)
У тик функции есть параметр DeltaTime. Это длина кадра в секундах. Соответственно, что бы выровнять действие вне зависимости от фпс, нужно умножить что-то на этот Delta Time. Например если хотите двигать сферу на метр в секунду, то будет следующее : NewLocation.Z = NewLocation.Z + 100.0f * DeltaTime.

2)
https://www.youtube.com/watch?v=O47Zw94 ... eP08DyWtHh
Там он про это говорит.

3)
Обработчики событий посмотрите в стандартной заготовке. Оно делается ровно так же, как и на персонаже (например прыжок). Единственное, там нужно ещё в ProjectSettings > Inputs настроить идентификаторы.
_________________
Просьба, не писать вопросы по движку в ЛС. Я не единственный, кто знает UE4, и поэтому пишите на форум или в группу.
Аватара пользователя
Пользователь
Сообщения: 4069
xai писал(а):
Я понял что эта функция вызывается при каждом кадре и получается что если туда написать код, который например немного поворачивает объект то на разных ПК он будет крутится по разному а иногда даже на одном и том же (когда просадки fps случаются). Теперь внимание, как ркешить эту проблему? Может есть какая то привязка к времени или еще что то.


реально помогает формула процентного соотношения, вот я для себя выбрал цифру относительно 60 фпс, потом формула все выравнивает,
1 / DeltaSecond = Fps, потом по формуле вставить свою цифру, которой следует подстроится под фпс(на скрине у меня это переменная типа флоат - SpeedRejim),

Изображение

p.s. если для расчетов использовать таймлайн, будет всегда ровно - при любом фпс. А вот тик или дэлей это да, требуется вычисление фпс и формула процентного соотношения.
Аватара пользователя
Пользователь
Сообщения: 995
Я так понял что на моём компе с такими формулами в твои игры не поиграешь. 8)
Аватара пользователя
Пользователь
Сообщения: 4069
Vladimir488 писал(а):
Я так понял что на моём компе с такими формулами в твои игры не поиграешь. 8)


фиговый у тебя комп, это код из игры которая в данное время летит на двухядерной мобиле.


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

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