在完成了 主相机跟随 的功能后
需要设置 炮台的旋转
基本原理 为 在炮台处安插一个turretMesh(不可见)
命名为turret
并且将炮台组件安置于turret文件下
接着创建实例物体 turret
public Transform turret;
public Transform turret;
public Transform gun;
private float turretRotSpeed = 0.3f;
private float turretRotTarget = 0;
private float turretRollTarget = 0;
private float maxRoll = 10f;
private float minRoll = -4f;
找一下 turret (实例化)
void Start ()
{
turret = transform.Find("turret");
if (turret == null)
{
Debug.Log("turret is null");
}
}
void Update() {
//欧拉角 要左右转的话 绕世界线的y轴 主相机位置
turretRotTarget = Camera.main.transform.eulerAngles.y;
//方法
TurretRotation();
}
//炮塔旋转
public void TurretRotation()
{
if (Camera.main == null)
return;
if (turret == null)
return;
//归一化角度
//var 角 = 当前炮塔的欧拉角 减去 主机欧拉夹角
float angle = turret.eulerAngles.y - turretRotTarget;
//鼠标左右摇晃 则turretRotTarget必然会变化 通过angle的变换推断 turret.Rotate的左右摆动位置
if (angle < 0) angle += 360;
if (angle > turretRotSpeed && angle < 180)
turret.Rotate(0f, -turretRotSpeed, 0f);
else if (angle > 180 && angle < 360 - turretRotSpeed)
turret.Rotate(0f, turretRotSpeed, 0f);
turretRotTarget = turret.eulerAngles.y - turretRollTarget;
}`