我想通过拖动鼠标来围绕游戏对象(例如立方体)旋转相机,以模拟游戏对象正在旋转的感觉(就像我们在场景编辑器中旋转对象以及在购物网站中旋转对象一样)。
下面的脚本是我正在使用的脚本。但有时脚本的行为非常奇怪。相机以与预期方向相反的方向旋转。为什么会发生这种情况?我需要对代码进行哪些更改才能使其正常工作?请帮忙。
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);
}
}
}
最佳答案
我认为这是由引用轴引起的。
因为您使用的是 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);
}
}
关于c# - 在 Unity 中通过鼠标拖动围绕游戏对象旋转相机,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54852001/