【发布时间】:2014-08-05 22:39:51
【问题描述】:
我想在使用 unity 3d 按下键时围绕 fbx 对象旋转相机。它是怎么做的?我尝试了一些示例,但它不起作用。首先我创建一个游戏对象并添加它的主摄像头。
【问题讨论】:
标签: c# camera unity3d unityscript
我想在使用 unity 3d 按下键时围绕 fbx 对象旋转相机。它是怎么做的?我尝试了一些示例,但它不起作用。首先我创建一个游戏对象并添加它的主摄像头。
【问题讨论】:
标签: c# camera unity3d unityscript
public class CameraOrbit : MonoBehaviour
{
public Transform target;
public float speed = 1f;
private float distance;
private float currentAngle = 0;
void Start()
{
distance = (new Vector3(transform.position.x, 0, transform.position.z)).magnitude;
}
void Update()
{
currentAngle += Input.GetAxis("Horizontal") * speed * Time.deltaTime;
Quaternion q = Quaternion.Euler(0, currentAngle, 0);
Vector3 direction = q * Vector3.forward;
transform.position = target.position - direction * distance + new Vector3(0, transform.position.y, 0);
transform.LookAt(target.position);
}
}
我目前无法获得团结,所以我可能搞砸了。
这个想法是保持一个你根据输入改变的角度。从角度创建一个四元数(四元数说明如何将向量旋转到某个方向),然后将向量旋转到该方向。从目标位置开始沿该方向移动一定距离,然后查看目标位置。
这只是实现绕y轴旋转,如果你想绕x轴旋转,你只需要另一个角度变量,然后更改为这个 Quaternion.Euler(currentAngleX, currentAngleY, 0);
【讨论】: