100分在线求(2D游戏 斜45度地图中) 精灵(玩家,NPC) 与景物以及精灵与精灵之间的遮挡处理,如何处理好? 请你进来拿分,~~~~~~~在线等!!

wenzhoufeng22 2008-07-24 05:45:25
100分求(2D游戏 斜45度地图中) 精灵(玩家,NPC) 与景物以及精灵与精灵之间的遮挡处理,如何处理好? 请你进来拿分,~~~~~~~在线等!!

我的地图上的景物层与景物层已经做好遮挡关系,只要采用它在地图上的X和Y坐标大小关系来判断,就可以判断出谁挡在谁前面

现在是我有一个精灵在跑动,这样的话透明处理如何搞定!

C++和Directx下实现~

鄙人不才,望您指点一下!
...全文
444 点赞 收藏 16
写回复
16 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
feng 2008-07-31
msn: jungle_footer@hotmail.com
回复
wenzhoufeng22 2008-07-31
[Quote=引用 13 楼 feng 的回复:]
可以用对角线的方法来实现.
具体实现是每个物体,包括动的和不动的,都用一个平行四边形勾勒出它所占的菱形块边界,通过排序这个四边形就能把遮挡关系算出来了
[/Quote]

怎么联系你.
回复
正宗老冉 2008-07-30
[Quote=引用 2 楼 Angleyuhj 的回复:]
游戏不行,帮顶~
[/Quote]
回复
feng 2008-07-30
可以用对角线的方法来实现.
具体实现是每个物体,包括动的和不动的,都用一个平行四边形勾勒出它所占的菱形块边界,通过排序这个四边形就能把遮挡关系算出来了
回复
执假以为真 2008-07-27
帮你顶到游戏论坛去!
回复
赵Andy 2008-07-27
帮顶了。
回复
OpenHero 2008-07-26
《windows游戏编程大师 》
回复
macfan 2008-07-26
GUI编程纯粹不懂
帮顶
回复
KenFire 2008-07-25
m_uLevel的取值是1,2,3,4;
回复
KenFire 2008-07-25
利用了z缓冲,整个问题就简单得多了;
关键就是z值的取值问题;

例如,我的程序窗口大小为800*600.而hge里面z缓冲的取值范围是0.0f~1.0f;(当中0.0f为最顶层)
SetZ( (600.0f - m_fposY) * (1.0f - m_uLevel*0.25f)/600.0f );
这句是解决遮掩问题的关键;
m_fposY是对象的屏幕Y坐标;
uLevel是层次;
0.25f是因为我将整个画面以遮掩关系分成了四层.1.0f/4 = 0.25f;

两个对象位于同一遮掩层次的话,Y坐标大的z值较小,也就是越接近顶层,实现下面遮掩上面;
但是由于有层次的限制,下层的对象z值永远小于上层的对象,实现层次遮掩.

我昨天才写的,应该还会有地方不完善,望指出.
回复
wenzhoufeng22 2008-07-25
[Quote=引用 5 楼 KenFire 的回复:]
我刚用hge写了一个.
用z缓冲轻松解决.
可惜是3d才有z缓冲.
[/Quote]

HGE我也用过,我的引擎虽是2D的,但是是基于3D来的
能讲讲你的原理吗?
回复
KenFire 2008-07-25
我刚用hge写了一个.
用z缓冲轻松解决.
可惜是3d才有z缓冲.
回复
wenzhoufeng22 2008-07-24
我的是Directx9
回复
wwwxinkai 2008-07-24
Directx8.0?
DDraw?
如果是的话去GAMERES上,有一个实例,叫什么我忘了,
是用ddraw实现的,有时间的话你去看下吧~
那个DEMO做的很强~!
回复
Angleyuhj 2008-07-24
游戏不行,帮顶~
回复
lin_style 2008-07-24
汗。。
怎么不到专业的游戏论坛
不是有个gamer吗
回复
相关推荐
发帖
community_281
创建于2021-05-27

207

社区成员

申请成为版主
帖子事件
创建了帖子
2008-07-24 05:45
社区公告
暂无公告