Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/unity3d/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 我怎么才能得到一个统一的旋转坐标呢?_C#_Unity3d - Fatal编程技术网

C# 我怎么才能得到一个统一的旋转坐标呢?

C# 我怎么才能得到一个统一的旋转坐标呢?,c#,unity3d,C#,Unity3d,我想让立方体旋转不超过60度,这样它就不会旋转超过60度 我试着用这个 if(gameObject.GetComponent<Transform>().rotation.x >= 60 || gameObject.GetComponent<Transform>().rotation.x <= -60 || gameObject.GetComponent<Transform>().rotation.z >= 60 || gameObject.G

我想让立方体旋转不超过60度,这样它就不会旋转超过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);
    }

if(gameObject.GetComponent().rotation.x>=60 | gameObject.GetComponent().rotation.x=60 | gameObject.GetComponent().rotation.z您感兴趣的是旋转的欧拉角,而不是旋转的四元数分量。您应该首先参考而不是
transform.rotation.x
transform.eulerAngles.z
而不是
transform.rotation.z

顺便说一句,调用
GetComponent
的次数最好尽量少,因为这是一个昂贵的操作。您应该调用一次,然后将结果分配给如下变量:

Transform cubeTransform = gameObject.GetComponent<Transform>(); 
if(cubeTransform.eulerAngles.x ...)
{
   ...
}

基本上,你想限制任意轴的旋转-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来夹紧最小值和最大值之间的任何浮点值。
希望,问题解决。

我认为你的方法很好,但不适合这种情况。
为了控制转换,应该处理欧拉角

简单理解如下:

// 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); 
//声明立方体旋转
float moveSpeed=5f//立方体旋转的速度
float rotatecube=moveSpeed*Time.deltaTime*10;
//你的情况可能是这样的
如果(transform.eulerAngles.z<(…声明要求…)
transform.Rotate(vector3.forward*rotateCube);
如果您仍然面临与角度有关的任何问题
console.log()
是更好的自我理解方式。
希望它能澄清….

谢谢我不知道我需要这么说
// 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);