Поворот камеры вокруг игрыОбъект на перетаскивание мышью в Unity - PullRequest
0 голосов
/ 24 февраля 2019

Я хочу вращать камеру вокруг gameObject (скажем, куба), перетаскивая мышку, чтобы имитировать ощущение, что gameObject вращается (точно так же, как мы вращаем объект в редакторе сцены и как на торговых сайтах).

Сценарий, который я использую ниже.Но иногда сценарий ведет себя очень странно.Камера вращается в направлении, противоположном ожидаемому направлению.Почему это происходит?Какие изменения мне нужно внести в код, чтобы он работал?Пожалуйста помоги.

using UnityEngine;
using System.Collections;

public class ExampleBehaviourScript : MonoBehaviour
{
    public Camera cameraObj;
    public GameObject myGameObj;
    public float speed = 2f;

    void Update()
    {
        RotateCamera();
    }

    void RotateCamera()
    {
        if(Input.GetMouseButton(0))
        {
         cameraObj.transform.RotateAround(myGameObj.transform.position, 
                                         Vector3.up,
                                         -Input.GetAxis("Mouse X")*speed);

         cameraObj.transform.RotateAround(myGameObj.transform.position, 
                                         Vector3.right,
                                         -Input.GetAxis("Mouse Y")*speed);
        } 

    }
}

Ответы [ 2 ]

0 голосов
/ 24 февраля 2019

Чтобы переместить ваш куб в направлении движений мыши, измените ваш код как удар:

void RotateCamera()
{
    if (Input.GetMouseButton(0))
    {
        cameraObj.transform.RotateAround(myGameObj.transform.position,
                                        Vector3.up,
                                        Input.GetAxis("Mouse X") * speed);

        cameraObj.transform.RotateAround(myGameObj.transform.position,
                                        Vector3.right,
                                        -Input.GetAxis("Mouse Y") * speed);
    }

}
0 голосов
/ 24 февраля 2019

Я думаю, что это вызвано осью отсчета.

Поскольку вы использовали Vector3.up, Vector3.right, а не камеру, она не была повернута в ожидаемом направлении.Итак, вы должны изменить, как показано ниже.

void RotateCamera()
{
    if(Input.GetMouseButton(0))
    {
     cameraObj.transform.RotateAround(myGameObj.transform.position, 
                                     cameraObj.transform.up,
                                     -Input.GetAxis("Mouse X")*speed);

     cameraObj.transform.RotateAround(myGameObj.transform.position, 
                                     cameraObj.transform.right,
                                     -Input.GetAxis("Mouse Y")*speed);
    } 

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...