如何实现一个菱形的CCMenuItem

  • 本帖最后由 fernando 于 2012-6-26 18:12 编辑 *

我现在用cocos2d-x做一个农场类的游戏,45度视角,没有用tileMap,现在碰到一个问题如下。农场的土地是一块块拼接在一起,我用CCMenuItemImage实现,这样点击每块土地时我就可以做相应的处理。但是这些 CCMenuItemImage有重叠区域(因为拼接) ,导致我点击上一块(上下相对y坐标)土地时,实际是下面的一块收到了这个点击。如下图所示,红色的点应该是上面的地块1的范围,但实际却是地块2收到了点击。
297

上面的地块的zOrder从下往上递减,我修改了CCMenu::ItemForTouch() 函数,使它返回zOrder最大的那个item。所以相当于下面的CCMenuItemImage遮盖了上面的一部分区域。

如何解决这个问题?

  • 本帖最后由 fernando 于 2012-6-26 18:12 编辑 *

问题换一个问法:如何实现一个菱形(diamond)MenuItem ?

层数 关系问题!

— Begin quote from ____

Mr_zhang_ 发表于 2012-6-26 17:34 url

层数 关系问题!

— End quote

能说具体一点吗?

我的问题换一个问法更明了: 如何实现一个钻石形的MenuItem?

— Begin quote from ____

fernando 发表于 2012-6-26 17:40 url

能说具体一点吗?

我的问题换一个问法更明了: 如何实现一个钻石形的MenuItem? …

— End quote

MenuItem 是继承 CCNode的,有API可以旋转一定的角度。

— Begin quote from ____

Mr_zhang_ 发表于 2012-6-26 17:53 url

MenuItem 是继承 CCNode的,有API可以旋转一定的角度。

— End quote

我这里的菱形并不能用矩形旋转得到,它的四个角度都不是90度(为了实现isometric效果 http://www.gandraxa.com/isometric_projection.xml)。