Вращение трехмерного объекта с твердым телом (с камерой в качестве ребенка) с помощью мыши - PullRequest
0 голосов
/ 27 сентября 2018

Я вращаю трехмерный объект с камерой (как ребенок) и твердым телом с мышью и клавиатурой.Я использую следующую codenippet:

private void Update()
    {

        float rh = Input.GetAxisRaw("Mouse X");
        float rv = Input.GetAxisRaw("Mouse Y");
        float rx = Input.GetAxisRaw("Roll");

        rotInput = new Vector3(rv, rh, rx);
        Thrust();  //Move forward and backward

    }

    private void FixedUpdate()
    {
        Moving.MoveInput(rotInput);
    }

Я могу перемещать 3D-объект (и камеру) с помощью мыши, но когда я смотрю влево или вправо, камера скользит по диагонали,Я хочу вращать мышью, как FPS, но с жестким телом (не с transform.euler ....).Кто-нибудь знает решение, чтобы камера двигалась точно по порядку с помощью мыши (без скольжения по диагонали)?

Я изменяю код на:

void moveWithMouse()
{
    moveCamera(Input.GetAxis("Mouse X"), Input.GetAxis("Mouse Y"), arrowMouseSpeed);
}

void moveCamera(float horizontal, float verticle, float moveSpeed)
    {
        mouseX = horizontal;
        mouseY = -verticle;

    rotY += mouseX * moveSpeed;
    rotX += -mouseY * moveSpeed;
    roll += Input.GetAxis("Roll");
    rotInput = new Vector3(rotY, rotX, roll);
    Debug.Log("rotInput" + rotInput);

} 

Но теперь он продолжает вращаться, и я не могу его остановить.Я до сих пор пользуюсь ридибоди.Есть ли решение, чтобы мышь работала правильно, и камера перестала вращаться, когда я перестал двигать мышь?

1 Ответ

0 голосов
/ 28 сентября 2018

Вам не нужен рулон.Это то, что наклоняет камеру по диагонали.Установите z от rotInput = new Vector3(rv, rh, rx); до 0, и оно должно работать как положено.

...