我有一個攝像頭,它將userInterface(畫布)對象顯示在我的相機前面。 我只更新我的用戶界面位置,如果相機光線不擊中我的userInterface對象對撞機。像這樣旋轉相機時對象旋轉不正確
public class UIPlacerAtCamFront : MonoBehaviour {
public GameObject userInterface;
public float placementDistance;
Vector3 uiPlacementPosition;
RaycastHit objectHit;
void Update() {
Vector3 fwd = this.transform.TransformDirection(Vector3.forward);
//Debug.DrawRay(this.transform.position, fwd * 50, Color.green);
if (Physics.Raycast(this.transform.position, fwd, out objectHit, 50))
{
//raycast hitting the userInterface collider, so do nothing, userinterface is infornt of the camrea already
}
else
{
//raycast is not hitting userInterfae collider, so update UserInterface position accoding to the camera
uiPlacementPosition = this.transform.position + this.transform.forward * placementDistance;
userInterface.transform.position = uiPlacementPosition;
}
//Continuously update userInterface rotation according to camera
userInterface.transform.rotation = this.transform.rotation;
}
}
上述腳本已附有我的相機,它正確顯示的對象,但我開始轉動我的相機我的UI對象的旋轉看起來如下圖像建議
我知道問題出在旋轉,所以我累了改變我的這個輪換代碼
userInterface.transform.rotation = this.transform.rotation;
這個
userInterface.transform.localEulerAngles = new Vector3 (this.transform.localEulerAngles.x,
0,
this.transform.localEulerAngles.z);
我想,我的userinteface對象面對我的相機correclty,甚至我的相機看開頭或結尾給出我的用戶界面對象。如何根據相機旋轉正確旋轉我的用戶界面?
我建議設置渲染模式畫布成'屏幕空間上 - Overlay'。 – Iggy
我不確定期望的行爲會是什麼(在第二張圖片上)。你介意一點點介紹一下嗎? 另外...如果你有歐拉角度的問題嘗試'Quaternion.LookAt()',我覺得它更直觀和防彈。 –
@lggy我不能讓它的屏幕空間 –