设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 4956|回复: 19
打印 上一主题 下一主题

[已经解决] 请问如何检测角色的图片与怪物的图片重叠?

[复制链接]
头像被屏蔽

Lv1.梦旅人 (禁止发言)

梦石
0
星屑
50
在线时间
0 小时
注册时间
2010-6-27
帖子
37
跳转到指定楼层
1
发表于 2010-6-29 21:03:10 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
提示: 作者被禁止或删除 内容自动屏蔽
头像被屏蔽

Lv1.梦旅人 (禁止发言)

梦石
0
星屑
50
在线时间
2 小时
注册时间
2010-6-30
帖子
99
20
发表于 2010-7-3 10:55:09 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
61
在线时间
24 小时
注册时间
2008-8-5
帖子
1924
19
发表于 2010-7-3 10:44:40 | 只看该作者
回复 古明地馨 的帖子

背景是指什么? o.o
david 的方法只是需要某个像素点透明或者不透明的情况,所以只需要 0 或者 1,然后最后可以每 64 位与运算一下,如果有任何一位是 1 都表示有碰撞
回复 支持 反对

使用道具 举报

头像被屏蔽

Lv1.梦旅人 (禁止发言)

梦石
0
星屑
50
在线时间
2 小时
注册时间
2010-6-30
帖子
99
18
发表于 2010-7-3 10:24:45 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
61
在线时间
24 小时
注册时间
2008-8-5
帖子
1924
17
发表于 2010-7-3 10:19:16 | 只看该作者
回复 古明地馨 的帖子

关于那个不透明数据的缓冲区在空间上其实还可以优化的,由于只需要一个布尔数据,所以用一个位元来保存就行了,而不需要一个 32 位的整型指针(Ruby 的动态数组)
回复 支持 反对

使用道具 举报

头像被屏蔽

Lv1.梦旅人 (禁止发言)

梦石
0
星屑
50
在线时间
2 小时
注册时间
2010-6-30
帖子
99
16
发表于 2010-7-3 09:19:18 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
462 小时
注册时间
2007-7-30
帖子
643
15
发表于 2010-7-3 09:12:44 | 只看该作者
回复 紫苏 的帖子

大可把這些映射表先存成一個檔
到時再讀取也不錯 = =b
回复 支持 反对

使用道具 举报

头像被屏蔽

Lv1.梦旅人 (禁止发言)

梦石
0
星屑
50
在线时间
2 小时
注册时间
2010-6-30
帖子
99
14
发表于 2010-7-3 09:00:55 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
61
在线时间
24 小时
注册时间
2008-8-5
帖子
1924
13
发表于 2010-7-3 01:28:14 | 只看该作者
回复 kojoy 的帖子

设:
(x11, y11) 为矩形1左上角坐标,(x12, y12) 为矩形1右下角坐标
(x21, y21) 为矩形1左上角坐标,(x22, y22) 为矩形1右下角坐标
(坐标为屏幕空间坐标)
if x12 < x21 then 不相交,矩形1在矩形2左边
else if x11 > x22 then 不相交,矩形1在矩形2右边
else if y12 < y21 then 不相交,矩形1在矩形2上面
else if y11 > y22 then 不相交,矩形1在矩形2下面
else 矩形1矩形2相交

回复 古明地馨 的帖子

哦~包围盒的兄弟似乎很多呀,没怎么研究过……如果是基于像素运算的不就完全可以精确判断了吗……以前也用过四叉树来表示 2D 场景,可以做一些简单的碰撞检测。3D 的 BSP 就是判断凸集和平面的相交了吧,不知和八叉树相比如何?

另外 david 的那个算法不知是不是八云在3楼说的那个像素算法,这个如果 get_pixel 是和 RM 的一样基于 GDI 的话,那慢是肯定的了,因为 get_pixel(以及 set_pixel)本身就很慢。位图资源在内存中初始是可被内存管理器移动的,如果 CPU 需要访问一块内存,那需要先锁定。get_pixel 和 set_pixel 都会先锁定位图资源,然后更新像素,最后解锁,这个过程做一次没什么,放在循环里面做就能看到速度的差别。解决方法也不少,第一种是在 set/get_pixel 之前预先通过 LockBits 锁定位图数据,然后再逐点 set/get_pixel,循环结束后解锁,这样就不会每次调用 set/get_pixel 都去锁定/解锁了;第二种是通过 GetBitmapBits 把位图数据一次性拷贝到系统内存的缓冲区中,然后直接在这个缓冲区中随机访问,这样效率也是很高

点评

紫苏桑XD~技术宅好可怕~  发表于 2010-7-3 01:32
回复 支持 反对

使用道具 举报

头像被屏蔽

Lv1.梦旅人 (禁止发言)

梦石
0
星屑
50
在线时间
0 小时
注册时间
2010-6-27
帖子
37
12
 楼主| 发表于 2010-7-2 16:55:16 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-5-10 10:00

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表