C# Unity3D旋转未按预期进行

C# Unity3D旋转未按预期进行,c#,unity3d,rotation,C#,Unity3d,Rotation,我正在尝试为模拟制作一个小的演示,我认为这部分会很简单。男孩,我错了,现在我完全被卡住了。这是我的问题 我正在尝试旋转,对于这个问题,我们将使用30度角,如下所示: 绿色光线为-15度,红色为0度,蓝色为+15度,总共30度 现在我想把30度分成相等的部分,第一个好的数字是10。这意味着我可以每3度绘制一条光线,直到达到最大值,在本例中为+15度。这可以在下面看到: 看起来不错!有一小部分空间关闭,如果有人知道原因,请告诉我 现在,我需要大量的光线,所以我们将上升10倍,将分割数增加到100

我正在尝试为模拟制作一个小的演示,我认为这部分会很简单。男孩,我错了,现在我完全被卡住了。这是我的问题

我正在尝试旋转,对于这个问题,我们将使用30度角,如下所示:

绿色光线为-15度,红色为0度,蓝色为+15度,总共30度

现在我想把30度分成相等的部分,第一个好的数字是10。这意味着我可以每3度绘制一条光线,直到达到最大值,在本例中为+15度。这可以在下面看到:

看起来不错!有一小部分空间关闭,如果有人知道原因,请告诉我

现在,我需要大量的光线,所以我们将上升10倍,将分割数增加到100,如下所示。另外,我需要使用imgur,因为这里只允许两张图片,所以请耐心等待,谢谢

第一张图片有100块,你可以看到光线都投射到左边。这是个问题

第二张图的分割数增加到1000。更糟糕的是,除了一个15度的区域外,物体周围的所有物体都被激光击中

下面是执行此操作的代码段

 if(testRotation)   
 {
      //Sets the objects rotation to the starting rotation which is -15 degeres
      this.transform.Rotate(this.transform.rotation.x, this.transform.rotation.y - 15.0f,           
           this.transform.rotation.z);

      for (int i = 0; i <= 10; i++)
      {
           //Draws a ray at the current position and forwards relative to the objects transform
           Debug.DrawRay(this.transform.position, 
           this.transform.forward * maxSightDistance, Color.cyan, 1000.0f);

           //This advances the rotation by a factor of one chunk 
           //which in this case is 10 which seems to work 
           this.transform.Rotate(new Vector3(this.transform.rotation.x, 
           this.transform.rotation.y + (30/10), this.transform.rotation.z));
      }

      //This makes it so it doesn't run forever
      testRotation = false;

 }
if(testRotation)
{
//将对象旋转设置为起始旋转-15度
this.transform.Rotate(this.transform.rotation.x,this.transform.rotation.y-15.0f,
这个函数是.transform.rotation.z);

对于(int i=0;i您将一个数字除以一个整数,这将返回一个整数。相反,您需要除以一个浮点以返回一个十进制数。
i、 e

编辑:此外,旋转的组件应为0,而不是其以前的值,以避免累积旋转

transform.Rotate(new Vector3(0, 30/10f, 0));

这就解决了100个片段的问题,但是除以1000,环绕的环仍然存在。我完全理解你的意思,我补充说,对于这两种情况,但是1000个片段,即使是浮动形式,仍然会刺穿物体周围的光线环,光线丢失在它们应该出现的点上。如果你把较小的n像200或500英寸这样的数字?当射线中放入200英寸时,它们会变得更紧,但在0度线之前停止。当放入500英寸时,它开始像1000英寸一样旋转,但没有那么远。从我所知,分割越小,旋转开始变为负?如果你在
this.trans中的for循环中为x和z分量放入0form.Rotate(new Vector3()
它的作用有什么不同吗?
transform.Rotate(new Vector3(0, 30/10f, 0));