カメラの前面に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に直面することを望ん
下記のようにそれは、私のために別の奇妙な回転をもたらします私のuserintefaceオブジェクトの。カメラの回転に合わせてUIを回転させるにはどうすればいいですか?
私は '画面スペースにあなたのキャンバスにレンダリングモードの設定をお勧めしたい - Overlay'。 – Iggy
私は、(その第2の画像上で)所望の挙動が何であるか不明である。それを少し詳しく教えてもらえますか? また、オイラー角に問題がある場合は、Quaternion.LookAt()を試してみると、より直感的で弾丸がないことがわかります。 –
@lggy私は画面のスペースを作ることができません –