簡體   English   中英

對象旋轉的鉗位值問題 - Unity C#

[英]Problem with Clamping Values for Object's Rotation - Unity C#

我在夾緊槍管的度數加上它的父級(坦克的船體)度數時也遇到了麻煩,所以我可以獲得與下圖右側相同的結果。

所以腳本很簡單,它使用 Y_Mouse 輸入旋轉槍管 ( turretBarrel ) 並使用 X_Mouse Input 旋轉坦克的 upperPart( turret ),以及槍管穩定。 腳本

   //Note this.transform is the tanks hull
  public Transform turret;
  public Transform turretBarrel;
  float xRot;
  float angleY;
  float rotY;
  float minTurretRotY;
  float maxTurretRotY;
  Vector3 mRot;
  Vector3 rot;


  public void Update(){
            xRot = Input.GetAxis("Mouse X") * 0.5f;
            turret.transform.localRotation *= Quaternion.Euler(turret.transform.localRotation.x, xRot, turret.transform.localRotation.z);

            angleY -= Input.GetAxisRaw("Mouse Y") * 0.5f;
            angleY = Mathf.Clamp(angleY, minTurretRotY, maxTurretRotY);

            mRot = turret.transform.rotation.eulerAngles;
            rot = turretBarrel.transform.rotation.eulerAngles;
            rotY = angleY;
            rotY = Mathf.Clamp(rotY, minTurretRotY, maxTurretRotY);

            // I'm using Quaternion.Euler for barrel Stabilization
            turretBarrel.transform.rotation = Quaternion.Euler(new Vector3(rotY, mRot.y, mRot.z));
            //Debug.Log(rotY +"  |  " + angleY + "/ Min : " + minTurretRotY+ " ;  Max : " + (maxTurretRotY));
}

在此處輸入圖片說明

您還需要根據主體(坦克)的 Y 旋轉來更改最小和最大 Y。 像這樣更新:

minY = YRotationOfParent;
maxY = YRotationOfParent + someOffSet;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM