• Ищем качественного (не новичок) разработчиков Xenforo для этого форума! В идеале, чтобы ты был фулл стек программистом. Если у тебя есть что показать, то свяжись с нами по контактным данным: https://t.me/DREDD

Event Tick Trace Crouch

Пользователь
Пользователь
Статус
Оффлайн
Регистрация
4 Дек 2020
Сообщения
106
Реакции
63
я сделал нормальное приседание где капсул компонент изменяется с 96 до 40, но как мне можно не просчитывать каждый кадр этот каст(вроде так).

Но если в event tick поставить delay хотя-бы на 0.1 персонаж может легко застрять во время того когда будет вставать, так как будет думать что над ним ничего нету
Делал примерно так же как и в этом видео, но пришлось сделать немножко по другому

Вот мои скрины
Пожалуйста, авторизуйтесь для просмотра ссылки.
Пожалуйста, авторизуйтесь для просмотра ссылки.
 
В event tick delay ставить нельзя
Ты каждый кадр запускаешь отложенную на n секунд задачу

В class default можно настроить частоту тика, но лучше просто запустить таймер

А если по-нормальному
Делаешь приседание на нажатие клавиши, в анимбм меняешь стейт на crouch, всё и никаких задач на тике не нужно
 
В event tick delay ставить нельзя
Ты каждый кадр запускаешь отложенную на n секунд задачу

В class default можно настроить частоту тика, но лучше просто запустить таймер

А если по-нормальному
Делаешь приседание на нажатие клавиши, в анимбм меняешь стейт на crouch, всё и никаких задач на тике не нужно
А где это анимбм?
Я не совсем понял что мне нужно переделать
 
А где это анимбм?
Я не совсем понял что мне нужно переделать

Переделать нужно всё, за исключением сжимания капсулы. Его можно оставить, но не на тике.

Animation Blueprint aka AnimBP твоего персонажа.
Там нужно добавить состояние, когда персонаж присел. И добавить условие, что он присел, я бы взял ссылку на Character и у него можно получить переменную IsCrouch

В основном Blueprint твоего персонажа необходимо на кнопку приседания сделать Character -> Crouch() \ Character -> UnCrouch()

Когда игрок попытается сделать UnCrouch нужно один раз кинуть трейс верхней точки капсулы вверх, чтобы убедиться, что над головой ничего нет. Постоянно трейсить это не нужно

Вот простой сетап приседания.
 
Последнее редактирование:
Спасибо,вроде понятно
 
Переделать нужно всё, за исключением сжимания капсулы. Его можно оставить, но не на тике.

Animation Blueprint aka AnimBP твоего персонажа.
Там нужно добавить состояние, когда персонаж присел. И добавить условие, что он присел, я бы взял ссылку на Character и у него можно получить переменную IsCrouch

В основном Blueprint твоего персонажа необходимо на кнопку приседания сделать Character -> Crouch() \ Character -> UnCrouch()

Когда игрок попытается сделать UnCrouch нужно один раз кинуть трейс верхней точки капсулы вверх, чтобы убедиться, что над головой ничего нет. Постоянно трейсить это не нужно

Вот простой сетап приседания.
а если игрок был например присевшим отжал контрол когда не мог встать(протрейсил и увидел что сверху что-то есть) и потом вылазит оттуда и над ним ничего нету, как сделать чтобы он потом вставал?
вроде только постоянно трейсить.
или как можно трейсить например раз в пол секунды постоянно?
По идеи тогда будет отлично оптимизировано.

И в видео показано от 3-го лица но у меня игра от 1-го, хотя это не сильно важно
 
Чтобы капсула не застревала, можно трейсить по границам капсулы. Лучше с некоторым допуском. Если нет желания делать из EveryTick, то можно делать это из таймера. По идее тебе надо трейсить только когда игрок пытается встать. И по результатам проверки трейсам ты или выполняешь вставание, или нет. Сделать автоматическое вставание можно, но я бы это оставил на этап доводки игровой механики.
 
А как можно трейсить из таймера? Он же когда-то закончиться,и откуда его запускать?

Я просто мало что знаю,не видел пока что как запускать из таймера,может есть какая-то фотка?
 
Если память не изменяет, в Blueprint'ах таймер работает через custom event. Создаешь этот Custom Event, на него цепляешь все что должен делать таймер. Ну и в процессе игры запускаешь таймер когда надо, и при необходимости останавливаешь. Я сейчас на С++ делаю, но могу поискать примеры работы с таймером в UE4 в старых наработках.
посмотри официальную доку:
Пожалуйста, авторизуйтесь для просмотра ссылки.
 
Если память не изменяет, в Blueprint'ах таймер работает через custom event. Создаешь этот Custom Event, на него цепляешь все что должен делать таймер. Ну и в процессе игры запускаешь таймер когда надо, и при необходимости останавливаешь. Я сейчас на С++ делаю, но могу поискать примеры работы с таймером в UE4 в старых наработках.
посмотри официальную доку:
Пожалуйста, авторизуйтесь для просмотра ссылки.
Спасибо,чуть позже попробую
 
Назад
Сверху Снизу