The problem with falling

Предположу, что у вас есть второй вариант использования лестницы - когда вы подходите и нажимаете кнопку, и в этот момент устанавливается значение Ladder Target. Без этой ссылки - чуда не произойдет (с), поэтому логично что вам нужно задать ее значение другим способом, если вы хотите начать взаимодействовать с лестницей другим способом.

Кстати не забудьте сбросить эту ссылку после того как вы прекратите использовать лестницу, от греха подальше. В таком случае можно убрать переменную IsInLadder, поскольку валидная ссылка на лестницу и будет этим маркером.

И как я сказал выше, устанавливайте Ladder Target после Line Trace и ПОСЛЕ всех проверок (проверки тега).
И вероятно стоит изменить тип переменной Ladder Target с Actor на BP_ProceduralLadderOnLine.

Касаемо оптимизации - настоятельно рекомендую делать только один Line Trace, затем сохранить его результат в переменную, и затем проверять все значения из переменной. Не нужно заново делать Line Trace при проверке лестницы, паркура и т.п.
Line Trace не самая дешевая операция, и в данном случае достаточно одного раза.

И до тех пор пока у вас будет валидная ссылка на лестницу - можно в принципе не делать новую проверку, если только вы не можете начать паркур уже находясь на лестнице.

2 Likes