地图中大道具的遮挡关系是怎么处理的?

如图,地图上有花瓶,屏风。
精灵走到5的时候,被花瓶挡住。 要实现这个可以把花瓶抠出来,当成静止的精灵画上去,然后根据y坐标来设置zorder??
但是屏风呢?想在1、2的时候挡屏风,在3、4的时候,被屏风挡。要把屏风切成4、5块分别做成静止的精灵吗?
感觉这样好麻烦。
有其他的方法吗?谢谢

还要计算宽高吧

不用吧。那样不烦到死?:3:

建立斜着的坐标系, 把实际x,y转成对应斜着坐标系的点 然后和墙的斜坐标系比较, 每走一步 设置一次zorder, 如果变的话

这个只能对付一个npc在墙边吧?
要是屏风周围1234都有npc,某些位置的遮挡关系会不正确吧:5:

不就是一个简单的ISO地图深度排序的问题吗,这种游戏在Flash上相关的文档到处都是

那你就对1楼的案例,简单的说下解决方案吧。反正很简单用不了几个字,就在这里说下吧。
不用flash,就用2dx使用的tiled map.:10:

:11: 很简单呀,地图不都有个tile属性吗,3,4这个属性设置成遮挡true,1.2设置成false

3,4设置成true的话,就把z设置高一点,比如8888,够高了吧

算法是通用的,跟语言没有关系。你可以下载一个开源的ISO地图引擎,比如Flash的。
你也可以下载一本Flash高级动画教程,里面有Iso地图和普通坐标转换的公式,如果是不规则的,比如2*3这种物品,需要每条边和另外的物品的每条边进行比较。
我以前空余时间写过一个简单的,没写完整, QuickX写的,你可以看一下https://bitbucket.org/bingheliefeng/farmville/src

你可能没明白1楼在说什么。 当然1楼也写的不太详细。:5:

这适合1楼的情况吗?
1楼只有一张图片,是背景。 各种道具或前景是要从背景中挖出来的。
这种需要比较边的算法,网上哪里有? 我不看源代码,只看思想就行了。:883:

这些 道具是美术 单独切图 另贴在屏幕上的, 明白了吗? 切图的时候 分背景层 道具层 等等 不要老把简单问题复杂化! 能用小学算数解决的问题 非要搞微积分

你这讲的,跟我在1楼讲的把屏风切割,有不一样的吗?:702:

:11:又看了一遍你一楼的说法 ,,,还真是、、
本来就是这么做, 不然的话一张地图 有山有水有树, 你怎么能保证遮挡层次正确, 显然 要分层。。。

不过我不建议用tileMap搞这种东西。 这东西是属于通用所有情况的地图 所以要实现某种特定需求会比较麻烦, 就像地图切换 分层切都很麻烦。。
正常情况 下 地图编辑器 应该是根据你们项目的实际情况自己开发一个, 比如json格式或者什么的

比较边的算法文字不好说清楚,看代码更容易理解。

tiled map不是有深度值的么…人物移动的时候改变一下深度值就好了啊

你是指vertexZ吗?

满足以下情况,还能用吗。 若能用,比用zorder有优势吗

  1. 背景是一张图片,上面的道具大小不一,也不规则
  2. 当道具挡住人物时要半透明。
  3. 人物的宽、高 都不只一个格子

若能用,在tiled map中用的什么层,什么图块集。是不规则图块集吗?
ccptest中有例子吗。
thx:7:

这我到不知道有什么区别,因为用zorder也能实现类似效果(我记得就是开个计时器,实时改变人物的vertexZ,或者zorder),testcpp里有类似的例子,但是没有挡住人物时半透明的效果,这估计你要自己判断.
人物宽高无所谓吧,只要根据落脚点的坐标来看就好了啊?(一个猜想)