我想在使用单位3d按下键时围绕fbx对象旋转相机。它怎么办?我尝试了一些例子,但它没有用。首先,我创建一个游戏对象并添加它的主要相机。
答案 0 :(得分:4)
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);