[英]How do I get one of the coordinates of rotation in unity?
我想要一個立方體不要旋轉超過 60 度,所以它不會旋轉到更多我試圖使用這個
if(gameObject.GetComponent<Transform>().rotation.x >= 60 || gameObject.GetComponent<Transform>().rotation.x <= -60 || gameObject.GetComponent<Transform>().rotation.z >= 60 || gameObject.GetComponent<Transform>().rotation.z <= -60)
{
gameObject.GetComponent<Transform>().rotation = new Quaternion(0, 0, 0, 0);
}
檢查旋轉。 它沒有用,所以我打印了 x 坐標中的旋轉
它說的坐標如下:5.98324、7.39482、-1.983495
我只是在移動 x position 而不是旋轉,它改變了它。
那么如何獲得它在組件變換中的 x 旋轉呢?
我認為你接近的方式很好,但不適合這種情況。 應該處理Euler Angles
以控制變換。
簡單的理解是這樣的:
// declare your cube rotation
float moveSpeed = 5f // speed in which cube rotates
float rotatecube = moveSpeed* Time.deltaTime* 10;
//Your condition be like
if(transform.eulerAngles.z < (.....declare the requirement.....))
transform.Rotate(vector3.forward * rotateCube);
如果您仍然面臨與角度相關的任何問題, console.log()
是更好的自我理解方式。 希望它澄清..
您對旋轉的歐拉角感興趣,而不是旋轉的四元數分量。 您應該首先參考transform.eulerAngles.x
而不是transform.rotation.x
或transform.eulerAngles.z
而不是transform.rotation.z
。
順便說一句,最好盡可能少地調用GetComponent
,因為這是一項昂貴的操作。 您應該調用它一次並將結果分配給一個變量,例如:
Transform cubeTransform = gameObject.GetComponent<Transform>();
if(cubeTransform.eulerAngles.x ...)
{
...
}
此外,您甚至不需要使用GetComponent
來訪問腳本附加到的gameObject
的transform
。 相反,您可以只使用transform
,例如:
if ( transform.eulerAngles.x >= 60 || transform.eulerAngles.x <= -60
|| transform.eulerAngles.z >= 60 || transform.eulerAngles.z <= -60)
{
transform.rotation = Quaternion.identity;
}
跳過以上所有評論。 我找到了一種方法來獲得准確的旋轉值,就像在 INSPECTOR 中一樣。 我正在展示角度(x) 。 代碼如下:
public Transform GameObject;
void Update()
{
float Rotation;
if(GameObject.eulerAngles.x <= 180f)
{
Rotation = GameObject.eulerAngles.x;
}
else
{
Rotation = GameObject.eulerAngles.x - 360f;
}
}
基本上,您想要限制任何軸的旋轉 - x、y 或 z。
如果是,那么這是解決方案:
程序:僅在 x 和 z 方向旋轉一個不超過 60 度的立方體。
var rotValue += Time.deltaTime; Cube.transform.rotaion = Quaternion.Eular(Mathf.Clamp(rotaValue,0,60), 0, Mathf.Clamp(rotaValue,0,60));
您可以使用 Mathf.clamp 來限制最小值和最大值之間的任何浮點值。 希望,問題解決了。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.