【问题标题】:XNA 3D Collision not workingXNA 3D 碰撞不工作
【发布时间】:2013-12-19 23:11:07
【问题描述】:

我已经制作了一款游戏,我刚刚将渲染更新为一个可以实际运行的新系统。试了一下,才发现碰撞已经断了。我认为新的世界矩阵有问题,所以我将其更改为绘图中的那个,但这并没有改变任何东西。我没有想法,并且网络上没有任何好的资源告诉我如何去做。以下链接是我的代码,没有编辑过的碰撞方法。如果你能告诉我该怎么做,甚至只是一个小费,那就太好了。谢谢!

链接:https://www.dropbox.com/s/a9sc9rcxahvukuf/Collision%20Help.txt

【问题讨论】:

  • 用 C# 编写类确实是合法的。鼓励,甚至。以至于我们大多数人可能不会费心分析不遵循 C# 命名约定的过程代码。
  • 您应该发布代码的相关部分,而不是整个项目的链接。
  • @pinckerman 我已经删除了所有对该主题不重要的部分。我已经更新了问题中的链接。

标签: c# 3d xna collision-detection


【解决方案1】:

您的模型正在根据组合来创建效果的转换进行渲染。世界,但您的球体(对于该模型)不受这些相同转换的影响。因此,模型的转换与球体的转换之间存在脱节。因此,您无法确定球体的位置或缩放是否正确。

虽然球体不关心模型的旋转变换,但它确实需要与您为模型渲染它提供相同的比例和平移变换。

您的根骨骼或父骨骼中可能存在缩放和/或平移变换,这些变换通过CopyAbsoluteBoneTransformsTo() 应用到模型,但没有应用到您的球体。对于您的球体,您似乎将其转换限制为位置变量......这可能还不够。

始终在球体上进行正确转换的一个可靠方法是通过您组合(并以相同顺序)创建效果的完全相同的矩阵集对其进行转换。用于渲染模型的世界球体。

【讨论】:

  • 我试过了,但是没有用。我尝试了所有不同的方法,但都没有奏效。他们中的一些人刚刚完全移除了球体。你能告诉我你会怎么做吗,因为我显然做错了什么。谢谢!
猜你喜欢
  • 2013-08-10
  • 2014-01-12
  • 1970-01-01
  • 1970-01-01
  • 2013-04-01
  • 1970-01-01
  • 1970-01-01
  • 2014-01-16
  • 1970-01-01
相关资源
最近更新 更多