玩家到体素碰撞检测/响应

发布于 2024-12-28 19:06:55 字数 177 浏览 1 评论 0原文

我有一大堆体素,就像《我的世界》一样。玩家/敌人都在这个网格中。我不知道如何进行这种类型的碰撞检测。请注意,这不是动态可移动对象与动态可移动对象,而是可移动对象与固定地面/墙壁/天花板。

我的检测没有问题,但我不知道该怎么做。

我必须处理的内容:玩家位置、速度和边界框,以及玩家周围的 1x1x1 体素数组。

I have a big array of voxels, a la Minecraft. The player/enemies are in this grid. I have no idea how to go about doing this type of collision detection. Note, this is NOT dynamic movable object vs. dynamic movable object, this is movable object vs. stationary ground/wall/ceiling.

I have no problem with detection, its the response that I do not know how to do.

What I have to work with: Player position, velocity, and boundingbox, and a array of 1x1x1 voxels surrounding the player.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

吝吻 2025-01-04 19:06:55
  • 计算玩家速度单位的点积碰撞体素的表面法线(指向外侧)。
  • 将单位曲面法线缩放(乘以)该值。
  • 从玩家的速度中减去你的结果。

这将为您带来大多数游戏所采用的“靠墙滑动”效果(没有任何有问题的三角学)

  • Calculate the dot product of the player's velocity and the unit surface normal of the colliding voxel (pointing outward).
  • Scale (multiply) the unit surface normal by this value.
  • Subtract your result from the player's velocity.

This will give you the "slide against the wall" effect that most games employ (without any problematic trigonometry)

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文