メインカメラが従う機能を完了した後
、タレットの回転を設定する必要があります。
基本的な原則は
、タレットという名前のタレットにturretMesh(非表示)を
配置し、タレットコンポーネントをタレットファイルの下に配置することです。
次に、インスタンスオブジェクトのタレットを作成します
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;
タレットを探す(インスタンス化)
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;
}`