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

Программирование для iPhone & Android

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

Сообщение f1rze 18 мар 2018, 17:17

Есть объект который вот так управляется джостиком,но при движении по диагонали - обьект движется быстрее чем просто вверх или вбок.Почему так происходит если вектор
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);
        }
f1rze
UNец
 
Сообщения: 4
Зарегистрирован: 13 мар 2018, 19:32

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

Сообщение eonyanov 06 апр 2018, 11:19

У тебя 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
Glow Asteroids Game
Happy Chair
Аватара пользователя
eonyanov
UNITрон
 
Сообщения: 298
Зарегистрирован: 22 авг 2014, 10:28


Вернуться в iPhone & Android

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 4