Zefirot
@Zefirot

Как правильно сделать управление по типу шутеров?

Полазив по сети посмотрел на примеры, составил свой, ходит правильно, если стоять на месте то вертит головой правильно, но вот если ходить и вертеть то получается не то, не пойму что не так, вроде голову поворачиваю отдельно от тела, но движение влияет на вид от лица, плюс при каждом нажатии скачет курсор в центр, подскажите что не так?
public partial class Player : MonoBehaviour{
    private float SettingsMouseSensitivityLook = 10f;
    [HideInInspector] public GameObject PlayerModel;
    [HideInInspector] public GameObject PlayerHead;
    [HideInInspector] public Camera PlayerCamera;
    [HideInInspector] public CharacterController PlayerHeadCharacterController;
    private float InputGetAxisVertical{ get { return Input.GetAxis("Vertical") * 3f; }}
    private float InputGetAxisHorizontal{ get { return Input.GetAxis("Horizontal") * 120.0f; }}
    private float InputGetAxisMouseY{ get { return Input.GetAxis("Mouse Y") * SettingsMouseSensitivityLook; }}
    private float InputGetAxisMouseX{ get { return Input.GetAxis("Mouse X") * (SettingsMouseSensitivityLook / 2f); }}
    private float MoveHeadY, MoveHeadX;
    private void Update(){
        MovePlayer();
        AimCamera();
        }
    private void MovePlayer(){
        PlayerModel.transform.Translate(0, 0, InputGetAxisVertical * Time.deltaTime);
        PlayerModel.transform.Rotate(0, InputGetAxisHorizontal * Time.deltaTime, 0);
        }
    private void AimCamera(){
        if(Input.GetMouseButton(0)){
            MoveHeadY -= InputGetAxisMouseY;
            MoveHeadY = Mathf.Clamp(MoveHeadY, -40f, 40f); 
            MoveHeadX += InputGetAxisMouseX;
            MoveHeadX = Mathf.Clamp(MoveHeadX, -75f, 75f); 
            PlayerHeadCharacterController.transform.rotation = Quaternion.Euler(MoveHeadY, MoveHeadX, 0f);
            }
        }
    }
  • Вопрос задан
  • 67 просмотров
Решения вопроса 1
freeExec
@freeExec
Участник OpenStreetMap
Вы голову вращаете в глобальных координатах, а надо бы относительно уже повёрнутого тела, т.е. в локальных.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
19 апр. 2024, в 05:01
999999 руб./за проект
19 апр. 2024, в 03:52
1000 руб./за проект
19 апр. 2024, в 03:01
1000 руб./за проект