3D 碰撞检测和响应
最近我找到了一份非常棒的[白皮书] (http://www.peroxide.dk/papers/collision/collision.pdf),介绍了如何在视频游戏中进行3D碰撞检测,而我想实现这个算法,但是我一直遇到一些自己无法解决的问题。该算法使用椭球体对象代表玩家/实体,并将世界压扁,使碰撞算法可以简化为球-三角形检测,然后再将世界扩展回来。听起来很不错,但我的碰撞似乎有时会出现问题,而我无法定位问题所在。[这里] (https://www.dropbox.com/s/5zbki6lxsz6fjyj/ld35_stripped.love?dl=1) 有我的代码的完整工作示例(需要[LOVE] (http://love2d.org)游戏框架)。通常我会在这里发一些代码片段,但实际上相关代码太多了,这样不会有很大的帮助。如果您不会或者无法使用LOVE运行游戏,则可以使用任何存档管理器打开.love文件(它只是一个zip文件)。相关文件包括:
- /libs/cpml/modules/collision.lua (完整的碰撞算法)
- /libs/cpml/modules/intersect.lua (各种交集算法,包括球-三角形)
- /libs/cpml/modules/mesh.lua(几个网格辅助函数)
- /resources/collision.cpp(白皮书中的原始代码)
如果有人能推荐更高效或者更容易的碰撞算法,那么我也非常开放。在过去的一年里,在游戏比赛中,我已经实现了几种碰撞检测算法,但都有一些缺陷。我真的想得到一个可靠的碰撞系统,以便我可以将精力集中在其他事情上,如游戏机制。
编辑:以下是碰撞检测失败的视频演示。您会看到玩家对象经常掉落到地下,红色碰撞点位置怪异等问题。
[https://www.youtube.com/watch?v=BX4Hdh-bQ5U] (https://www.youtube.com/watch?v=BX4Hdh-bQ5U)
- Lua 虚拟机加密load(string.dump(function)) 后执行失败问题如何解决
- 我想创建一个 Nginx 规则,禁止访问
- 如何将两个不同的lua文件合成一个 东西有点长 大佬请耐心看完 我是小白研究几天了都没搞定
- 如何在roblox studio中1:1导入真实世界的地形?
- 求解,lua_resume的第二次调用继续执行协程问题。
- 【上海普陀区】内向猫网络招募【Skynet游戏框架Lua后端程序员】
- SF爱好求教:如何用lua实现游戏内调用数据库函数实现账号密码注册?
- Lua实现网站后台开发
- LUA错误显式返回,社区常见的规约是怎么样的
- lua5.3下载库失败
- 请问如何实现文本框内容和某个网页搜索框内容连接,并把网页输出来的结果反馈到另外一个文本框上
- lua lanes多线程使用
- 一个kv数据库
- openresty 有没有比较轻量的 docker 镜像
- 想问一下,有大佬用过luacurl吗
- 在Lua执行过程中使用Load函数出现问题
- 为什么 neovim 里没有显示一些特殊字符?
- Lua比较两个表的值(不考虑键的顺序)
- 有个lua简单的项目,外包,有意者加微信 liuheng600456详谈,最好在成都
- 如何在 Visual Studio 2022 中运行 Lua 代码?
