由于计算器Solver测向偏移会有动画延迟,并且达不到项目需求所以自己研究了跟随摄像机角度移动物体。
修改物体旋转角度,如果直接使用Quaternion会有一些问题,暂时也没研究透,所以改用eulerAngles。
计算旋转角度需要使用三角函数,eulerAngles中的角度不可以直接计算,需要转换为弧度
弧度角度转换公式为:角度=180°×弧度÷π 弧度=角度×π÷180°
上代码
public float pannelAngle = 30;//物体相对摄像机便宜角度
public void ResetRotate()
{
//获取相机
GameObject sxt = GameObject.Find("Main Camera");
//利用三角函数计算坐标偏移量
float x = sxt.transform.position.x + Mathf.Sin((sxt.transform.eulerAngles.y + pannelAngle) * 3.14f / 180);
float z = sxt.transform.position.z + Mathf.Cos((sxt.transform.eulerAngles.y + pannelAngle) * 3.14f / 180);
使用计算之后的数据修改坐标及旋转角度
transform.position = new Vector3(x, sxt.transform.position.y,z);
transform.eulerAngles = new Vector3(0, sxt.transform.eulerAngles.y + pannelAngle, 0);
}