[英]Object rotation is not correct when rotating the camera
我有一台照相機,它在照相機的前面顯示了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對象面對我的相機,即使我的相機看着我的userinteface對象的開始或結束。 如何根據相機旋轉正確旋轉UI?
如果我正確理解。 您想要的行為類似於滑動Google地圖。 只是相機必須旋轉,圖片必須針對行為調整其位置和旋轉。
下面的代碼應該這樣做:
void Update() {
userInterface.transform.rotation = this.transform.rotation;
// Project camera to canvas plane
Vector3 projection = Vector3.ProjectOnPlane(this.transform.position - userInterface.transform.position, userInterface.transform.forward)
+ userInterface.transform.position;
// Get distance from camera to projected position (basically, distance from point to plane)
float curDistance = (this.transform.position - projection).magnitude;
// Correct that distance with desired distance
userInterface.transform.position += this.transform.forward * (placementDistance - curDistance);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.