coco2dx精灵和背景遮挡_45度地图遮挡问题解决方案(cocos2d-x)

最近一直在做45度斜视角游戏,也就是isometric等容地图,俗称2.5D。地图上物体的前后遮挡是我遇到的第一个问题,总结一下处理方法。

遮挡问题(不知道术语),就是比如一个角色站在树后面,那么树要遮挡住角色的一部分,我是用实时修改zorder实现的。

1. 制作地图

用Tiled制作45度地图时,物体如何放在地图上有2种方法:

1.1 标记法:在地图对象层上标记出对象,并且指定该对象的类型。游戏加载地图时,遍历所有的对象,根据其类型,生成不同的精灵:主角、NPC、城墙、建筑等。生成的时候把zorder设置成该精灵所在的瓦块坐标的x分量和y分量之和。比如城墙在(10,20)这个瓦块上,那么其zorder就是10+20=30。

1.2 分层法:直接把物体画在layer上。思路是地图分为多层。假如地图x方向有m格,y方向有n格,那么地图要分成m+n-1层(正对屏幕,距离眼睛最近的一排瓦块是第m+n-1层,最远的时第1层)。这么分的原因是,每层的zorder都不同,第n层的zorder是n,所以就实现了离眼睛近的物体遮挡离眼睛远的物体。这个方法非常麻烦,不过能解决问题。把所有物体都放在同一层上,然后加载时特殊处理,肯定也能解决,以后再研究。

2. 角色移动

角色移动的时候,要在setPosition的同时修改zorder,示例代码如下:

virtual setPosition(const CCPoint&pos) {//调用基类的setPosition

CCSprite::setPositi

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值