游戏开发论坛

 找回密码
 立即注册
搜索
12
返回列表 发新帖
楼主: 胡杨

2D游戏地图中,物件和物件遮挡怎么计算的呀?

[复制链接]

6

主题

130

帖子

932

积分

高级会员

Rank: 4

积分
932
 楼主| 发表于 2016-4-17 10:33:25 | 显示全部楼层
Aming 发表于 2016-4-16 14:17
bottom做插入排序,物件貼圖順序就出來了
也就是上面一直講的y軸畫家演算法
一張圖就一個y值,所以還是會有視 ...

插入排序?怎么排?

3

主题

24

帖子

129

积分

注册会员

Rank: 2

积分
129
发表于 2016-4-18 15:51:41 | 显示全部楼层
有的游戏是用菱形块为单为,设定障碍,以及设定遮挡层级的
因为游戏场景都是斜45度的视角,也就是说,大部分的物件都是斜着的,那么用菱形块就比较适合。
(不过我个人觉得用矩形块也问题不大,菱形块构建起来很复杂.)
然后遮挡顺序的问题,

我一时说不清楚,给你点提示,有一种做法是这样:

首先,定义物件的层级,比如,地图背景是第1层,地表上的植被是第2层,花草,建筑,树等是第3层,场景特效是第4层,等等,层级高的必定遮挡层级低的,至于一个物件是属于哪一个层,由编辑器指定,你同样可以将一个建筑物设为最高层,设置比怪物层级还高,这样,怪物永远会被这个建筑物遮挡住,通过这个技巧可以实现一些特殊效果.
还有,这个层级可能会随着游戏的内容而发生变化,比如一个怪物,当他死亡之后,他的层级就必须降低,以使其他怪物和人物始终遮挡住他,这样就会比较真实,因为尸体总是被人踩在上面的...

然后,相同层级之间也需要确定前后遮挡关系,那么需要为每个物件标出两个点(一个点等于一个菱形块,当然,也可以设定为像素),由这两个点连成一条直线,在直线上面的,就被该物件遮挡,在直线下面的,就遮挡该物件.这两个点也可以是相同位置(即,同一个菱形块),那这就是相当于画家算法里的Y值, 就是说,程序里需要计算点和直线的前后关系,或者是直线和直线的前后关系,来确定到底谁遮挡谁。

明白么?


如果不想这么复杂,做个简单的,也能做出效果,就是所有物件都有一个Y值,比如怪物的Y值就是脚的位置处,然后比较这个Y,Y小的,就会被遮挡. 就是一个map<int, 物件> key为Y值, 按map的顺序画就OK.
先画地图背景,再画所有怪物人物,最后画所有遮挡图.


0

主题

275

帖子

676

积分

高级会员

Rank: 4

积分
676
发表于 2016-4-18 19:14:31 | 显示全部楼层
胡杨 发表于 2016-4-17 10:33
插入排序?怎么排?

直接拿bottom值,小的排前面,大的排後面
簡單方法 就是一個物件對隊列作輪詢..比他小的插前面 比他大 下一個

int count=objs.size();
for(int i=0;i<count;i++)
{
    if (objs.bottom>obj.bottom)
     {
         objs.insert(i,obj);
         return ;
      }
}
objs.push_back(obj);

6

主题

130

帖子

932

积分

高级会员

Rank: 4

积分
932
 楼主| 发表于 2016-4-19 11:42:12 | 显示全部楼层
Aming 发表于 2016-4-18 19:14
直接拿bottom值,小的排前面,大的排後面
簡單方法 就是一個物件對隊列作輪詢..比他小的插前面 比他大 下一 ...

这个按bottom排序已经试了,不对。

6

主题

130

帖子

932

积分

高级会员

Rank: 4

积分
932
 楼主| 发表于 2016-4-19 11:43:23 | 显示全部楼层
yrmuhon 发表于 2016-4-18 15:51
有的游戏是用菱形块为单为,设定障碍,以及设定遮挡层级的
因为游戏场景都是斜45度的视角,也就是说,大部分 ...

谢谢你的耐心回复。谢谢。

0

主题

275

帖子

676

积分

高级会员

Rank: 4

积分
676
发表于 2016-4-19 13:31:20 | 显示全部楼层
胡杨 发表于 2016-4-19 11:42
这个按bottom排序已经试了,不对。

前面說過了,大圖會有重疊視覺錯誤,如果要正確要細切地圖格子大小如長條型或是菱形區塊
連人物都要是菱形區塊..當然這些寫個程式自動分割並不難

6

主题

130

帖子

932

积分

高级会员

Rank: 4

积分
932
 楼主| 发表于 2016-5-16 09:38:07 | 显示全部楼层
Aming 发表于 2016-4-19 13:31
前面說過了,大圖會有重疊視覺錯誤,如果要正確要細切地圖格子大小如長條型或是菱形區塊
連人物都要是菱形 ...

非常感谢!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2024-5-20 08:51

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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