Инишиал механика наклона при залазании на стены
Нуждается в доработке (как минимум чтобы вращалось в правильную сторону), но вроде-как выглядит прикольно
This commit is contained in:
1 parent
07ce27618c
commit
0e188efe59
7 files changed
+170
-38
No files matched your search
+4
-4
@@ -14,15 +14,15 @@ namespace Code.Gameplay.Character.Controller.Abilities
|
||||
// Минимальная горизонтальная скорость для начала залазания на стену
|
||||
private readonly float _minWallClimbSpeed;
|
||||
// Пороговый косинус стены
|
||||
private readonly float _wallNormalThreshold;
|
||||
|
||||
public float WallNormalThreshold { get; }
|
||||
|
||||
// Конструктор механики залазания на стену
|
||||
public WallClimbMechanic(float wallClimbSpeedFactor, float minWallClimbSpeed, float wallDetectionAngleThreshold)
|
||||
{
|
||||
_wallClimbSpeedFactor = wallClimbSpeedFactor;
|
||||
_minWallClimbSpeed = minWallClimbSpeed;
|
||||
// Преобразуем угол в косинус порога: если |dot| > cos(threshold), то это НЕ стена
|
||||
_wallNormalThreshold = Mathf.Cos(Mathf.Deg2Rad * wallDetectionAngleThreshold);
|
||||
WallNormalThreshold = Mathf.Cos(Mathf.Deg2Rad * wallDetectionAngleThreshold);
|
||||
}
|
||||
|
||||
// Обработка столкновения при движении (вызывается при ударе о препятствие)
|
||||
@@ -30,7 +30,7 @@ namespace Code.Gameplay.Character.Controller.Abilities
|
||||
{
|
||||
// Проверяем, что это вертикальная или почти вертикальная поверхность (стена)
|
||||
var dotWithUp = Vector3.Dot(hitNormal, motor.CharacterUp);
|
||||
if (Mathf.Abs(dotWithUp) > _wallNormalThreshold) return; // Не стена — это пол или потолок
|
||||
if (Mathf.Abs(dotWithUp) > WallNormalThreshold) return; // Не стена — это пол или потолок
|
||||
|
||||
// Получаем текущую скорость персонажа
|
||||
var currentVelocity = motor.Velocity;
|
||||
|
||||
Reference in new issue
Block a user