【问题标题】:Rotate gameObject by applying rotation matrix in unity3d通过在 unity3d 中应用旋转矩阵来旋转游戏对象
【发布时间】:2016-07-29 08:59:48
【问题描述】:

是否可以通过应用旋转矩阵来旋转游戏对象。而不是传递每个角度并旋转它。

我尝试使用GL.MultMatrix(),但游戏对象没有移动

代码片段:

    GL.PushMatrix();
    GL.MultMatrix(m);
    GL.PopMatrix(); 

上面的sn-p在update()函数中。 Docs说GL.MultMatrix()类似于opengl库中的glMultMatrix。我们可以在openGl中使用它来向右旋转!!

如果有任何方法可以实现这一点,请提及。 谢谢

【问题讨论】:

  • 来自文档“GL 绘图命令立即执行。这意味着如果您在 Update() 中调用它们,它们将在相机渲染之前执行(并且相机很可能会清除屏幕,使GL 图纸不可见)。”您是否尝试将其放入 OnPostRender() 中?
  • 我没有在场景中绘制任何东西,只是想旋转一个游戏对象,我将此脚本附加到游戏对象。我试过 OnPostRender() 也没有工作
  • 我不认为你可以这样做,因为在这里你只是推一个矩阵而不将它分配给游戏对象和AFAIK没有允许GL的函数。
  • 有没有办法将它分配给游戏对象并实现它
  • 我认为`GL.PopMatrix()`恢复了计算值

标签: opengl matrix unity3d rotation unityscript


【解决方案1】:

我不确定您要达到什么目的,但使用 GL 进行轮换可能不是一个好主意。你看过Matrix4x4吗?

我不太了解矩阵,但我可以告诉你 GL 的工作逻辑略有不同。您需要使用 GL 类(如 GL.Vertex3)在 MultMatrix()PopMatrix() 命令之间手动绘制您的东西,这可以让您完全控制事物的呈现方式,但它是多余的。

【讨论】:

  • 我没有在场景中绘制任何东西,只是试图通过提供旋转矩阵来旋转游戏对象,然后我将此脚本附加到该特定游戏对象
  • @javvajikiran,我同意@Nika。为什么不试试Quaternion,它更简单更强大。就像:tranform.rotation*=Quaternion.AngleAxis(<degrees>, transform.right); //or Vector3.rightWiki Quaternion
  • 是的,我可以,但我可以知道为什么上面的代码不起作用
  • GL 用于绘制新的东西,它不会重绘或以某种方式修改游戏中现有的变换。在GL.MultMatrix(m);GL.PopMatrix(); 之间,你的shell 调用GL 绘图方法来绘制东西。请参阅 GL 类文档中的示例。
猜你喜欢
  • 1970-01-01
  • 2014-08-05
  • 1970-01-01
  • 2018-06-14
  • 2014-11-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多