像素碰撞追踪
2011-9-7 15:51:13
收藏:0
阅读:125
评论:2
我有一个大小为20 x 10像素的角色和一个基于像素的碰撞地图(类似于贪吃蛇)。
如果角色的速度大于每帧1像素,有什么最佳的方法来追踪碰撞。是否有比沿着速度向量迭代每个像素更好的解决方案?
我在Lua(Love 2D)中进行此操作,但通用解决方案最理想。
原文链接 https://stackoverflow.com/questions/7336820
点赞
stackoverflow用户141727
我会结合包围盒碰撞和像素完美碰撞。
因此,您的游戏中的所有实体都将具有包围盒,即与您的精灵宽度和高度相同的框架。将其用作您的第一级碰撞测试。完成此操作后,如果有撞击,则使用碰撞映射获取更细节的级别。
这种优化将有助于提高速度,并为引擎增加了灵活性,因为并不是所有碰撞都必须是像素完美的。
至于实际的像素完美碰撞算法,您所描述的方法是可行的。但是,如果您想提高速度,可以尝试以下方法:
为每个精灵提供一个位掩码(如像素映射,但每个像素仅有一个位) 例如:
00000000
00100000
01100000
01110000
当一个精灵与另一个精灵发生碰撞时,从较小的位掩码创建一个与较大的位掩码相同大小的新位掩码,并通过精灵之间位置差异进行“偏移”。
完成此操作后,请按位“与”这两个掩码中的所有字节。如果任何字节的结果> 0,则存在碰撞。
2012-01-20 00:18:52
评论区的留言会收到邮件通知哦~
推荐文章
- 如何在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 代码?
- addEventListener 返回 nil Lua
- Lua中获取用户配置主目录的跨平台方法
- 如何编写 Lua 模式将字符串(嵌套数组)转换为真正的数组?
你的解决方案最简单-迭代每个像素。
只需确保在每次迭代中仅检查“新”像素。
假设字符同时向右下移动:
***** ..... ..... * =“现在” ***** .***** .****# . =“旧且现在为空” ***** .***** = > .****# # =“新的”;在第2次迭代中检查这些内容 ***** .***** .****# ***** ##### It. 1 It. 2 “新的”像素
沿着移动的每次迭代中要检查的像素几乎没有什么区别; 仅需要检查标记为“新”的像素以进行影响检查。在这些像素上进行检查,如果没有碰撞,则继续移动。您可以使用此来优化大量计算。