Не видя больше кода, трудно сказать, но есть одна вещь, которая делает выделиться мне: если ваш объект вращается вокруг оси х (т.е. может быть наклонен вверх или вниз), то вы бы см. поведение, которое вы описываете, из кода, который у вас есть. (Из вашего видео не ясно, действительно ли это так, но кажется, что у вашей земли есть какой-то наклон, который мог бы вызвать это, если модели были выровнены с полом.)
Рассмотрите: если ваш агент обращается непосредственно вдоль оси Z, тогда его transform.forward
будет иметь нулевое значение y
. Начальное значение force
будет иметь величину 300
(и по-прежнему будет иметь нулевое значение y
). Затем вы установите y
в положение 750
, что дает полную силу (0, 750, 300)
.
Теперь подумайте, что ваш агент стоит почти полностью вверх. transform.forward
теперь (0, 299, 0.01)
, и вы умножаетесь на 300, но затем устанавливаете y = 750
. Теперь ваша сила равна (0, 750, 3)
для агента, который прыгает в том же направлении.
Вы можете это исправить, изменив конец Attack
так:
Vector3 horizontalDirection = new Vector3(transform.forward.x, 0, transform.forward.z);
Vector3 force = horizontalDirection.normalized * 300f;
force.y = 750f;
rig.AddForce(force);
Приведенный выше код гарантирует величина force
не будет соответствовать независимо от того, в каком направлении ваш персонаж сталкивается.
(Другой вопрос, упомянутый в комментариях по @fafase очень правдоподобная причина, и оно может быть один или оба из них виноват!)
Я имею в виду, что он должен делать с тем, как вы называете Attack метод. Скорее всего, в первом случае вашего видео метод вызывается один раз, а во втором случае он вызывает несколько кадров. Вы должны предоставить весь сценарий AI, возможно, через какой-либо dropbox или еще. – Everts
Согласен, вы можете вставить скрипт, который вызывает метод атаки, пожалуйста –