Страница 1 из 1

Почему движение по диагонали быстрее чем вверх(вбок)?

СообщениеДобавлено: 18 мар 2018, 17:17
f1rze
Есть объект который вот так управляется джостиком,но при движении по диагонали - обьект движется быстрее чем просто вверх или вбок.Почему так происходит если вектор
rb.AddForce (moveVec.normalized* moveForce) нормализован? Может нужно что-то в физике проекта исправить?


Синтаксис:
Используется csharp
using UnityStandardAssets.CrossPlatformInput;
void FixedUpdate () {

                Vector3 moveVec = new Vector3(CrossPlatformInputManager.GetAxis ("Horizontal"), CrossPlatformInputManager.GetAxis ("Vertical"),4096) ;
                if (moveVec.x != 0 && moveVec.y != 0)
                        targetRotation = Quaternion.LookRotation (moveVec.normalized, Vector3.back.normalized);
                transform.rotation= Quaternion.Slerp (transform.rotation, targetRotation, rotationForce * Time.deltaTime);
                rb.AddForce (moveVec.normalized* moveForce);
        }

Re: Почему движение по диагонали быстрее чем вверх(вбок)?

СообщениеДобавлено: 06 апр 2018, 11:19
eonyanov
У тебя moveVec - это вектор3 и у него есть своя Z координата. Может поэтому когда его нормализуешь, он получается немного другой и движение другое.
Попробуй нормализовать двумерный вектор из X и Y координат твоего вектора.
Как-то так:
Синтаксис:
Используется csharp
Vector2 vec2 = new Vector(moveVec.x, moveVec.y).normalized;
rb.AddForce (new Vector3(vec2.x, vec2.y, moveVec.z) * moveForce);
 


З.Ы.: раз уж объект имеет ригидбоди, то и крути его через MoveRotation