网页
资讯
视频
图片
知道
文库
贴吧
地图
采购
进入贴吧
全吧搜索
吧内搜索
搜贴
搜人
进吧
搜标签
日
一
二
三
四
五
六
签到排名:今日本吧第
个签到,
本吧因你更精彩,明天继续来努力!
本吧签到人数:0
一键签到
成为超级会员,使用一键签到
一键签到
本月漏签
0
次!
0
成为超级会员,赠送8张补签卡
如何使用?
点击日历上漏签日期,即可进行
补签
。
连续签到:
天 累计签到:
天
0
超级会员单次开通12个月以上,赠送连续签到卡3张
使用连续签到卡
12月23日
漏签
0
天
godot吧
关注:
6,909
贴子:
34,229
看贴
图片
吧主推荐
游戏
1
2
下一页
尾页
18
回复贴,共
2
页
,跳到
页
确定
<<返回godot吧
>0< 加载中...
尝试在godot中实现像素完美碰撞检测(pixel perfect collision)
只看楼主
收藏
回复
Cube
网络联机
12
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
像素完美碰撞检测就是让两个节点以图片作为碰撞数据,然后对相交的每个像素进行碰撞检测,如图。
Cube
网络联机
12
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
先创建一个pixel_perfect_mask_manager,设为单例,用来管理碰撞数据
Cube
网络联机
12
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
然后创建一个PixelPerfectCollider,作为像素完美碰撞检测碰撞体。
Cube
网络联机
12
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
在碰撞体来到场景时尝试向MaskManager获取图片的碰撞数据,如果数据不存在就注册一个。
获取碰撞数据代码
Cube
网络联机
12
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
最后就是碰撞检测的代码
很简单的算法。
Cube
网络联机
12
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
最后写个小例子测试下。
先创建一个ColliderA继承这个PixelPerfectCollider,然后加上简单的八方向控制代码,如果碰到“处于block组的Collider节点”则变红
再创建一个ColliderB,加入block组。
哦对了,别忘了选上base_texture
Cube
网络联机
12
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
最后就是这种效果啦
Cube
网络联机
12
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
当然这并不支持缩放和旋转
至于缩放旋转怎么搞..容lz再想想
多能豆
小吧主
11
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
阔以阔以,是真的厉害。
但,在众多碰撞元素的情况下优化怎样???
孤独凄凉的美
动画特效
4
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
可以加油,我期待后续
人类的大敌
吧主
14
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
数组里加不透明像素位置,然后循环判断像素的叠加嘛。回想起了GM的精确像素碰撞(虽然当年用GM的时候也是考虑优化,结果一直没用过)
不过也难得使用了这些godot的语法特性,继承和定义类名……因为GM貌似至今没有类,我用godot时,还是留下了很多GM后遗症
明月不知归处
项目流程
2
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
我喜欢这个教程
左撇子673
godot
1
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
最完美的解决方案是使用多边形碰撞检测而不是像素检测
Cube
网络联机
12
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
好久不见 目前LZ已经完成缩放+偏移+旋转的像素完美碰撞检测
并且利用了godot的编辑器扩展 写了个图像掩码生成器
然后使用一个单例 在游戏开始的时候将所有碰撞数据载入一个dict中 大大提高了效率
移风墨影
godot
1
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
楼主 如果图片水平对称了咋整
登录百度账号
扫二维码下载贴吧客户端
下载贴吧APP
看高清直播、视频!
贴吧页面意见反馈
违规贴吧举报反馈通道
贴吧违规信息处理公示