Камера вращается вокруг оси z, хотя не должна.

Общие вопросы о Unity3D

Камера вращается вокруг оси z, хотя не должна.

Сообщение Max85251 10 мар 2022, 20:59

Здравствуйте, я хотел сделать своего персонажа, и когда делал скрипт для поворота камеры с помощью мыши столкнулся с проблемой: камера почему-то вращается вокруг оси Z, помогите пожалуйста.
Синтаксис:
Используется csharp
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class rotate : MonoBehaviour
{
    float xRotate;
    float yRotate;

    void FixedUpdate()
    {
        xRotate = Input.GetAxis("Mouse X") * 10;
        yRotate = Input.GetAxis("Mouse Y") * -10;
        transform.Rotate(yRotate, xRotate, 0);
    }
}
 
Max85251
UNец
 
Сообщения: 1
Зарегистрирован: 10 мар 2022, 20:46

Re: Камера вращается вокруг оси z, хотя не должна.

Сообщение JustAUser 10 мар 2022, 21:46

Ты вращяешь камеру относительно уже созданого в пред. кадре вращения,откуда появляется вразщение по оси Z. нужно присваивать поворот камеры. И лучше делать это в Late Update, если ты привяжешь камеру к объекту который движеться.
Синтаксис:
Используется csharp
transform.rotation = Quarternion.Eueler(x,y,0)
JustAUser
UNец
 
Сообщения: 14
Зарегистрирован: 19 фев 2022, 17:10

Re: Камера вращается вокруг оси z, хотя не должна.

Сообщение 81aderunner 27 янв 2024, 10:34

По умолчанию используется локальная система координат. И чтобы избежать вращения вокруг оси Z, можно просто сделать так, чтобы вращение вокруг оси Y было по глобальным координатам, всегда параллельно горизонту - этого можно добиться разбив код вращения на две части и добавив Space.World там где вращение вокруг оси Y.
Синтаксис:
Используется csharp
transform.Rotate(0, xRotate, 0, Space.World);
transform.Rotate(yRotate, 0, 0);
81aderunner
UNец
 
Сообщения: 1
Зарегистрирован: 27 янв 2024, 10:08


Вернуться в Общие вопросы

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

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