我在游戏中有一个山的轮廓,需要Corona能够辨别用户在山上按下(触摸事件)和按下山峰之间的山谷(用于创建形状的alpha通道) 。在这种意义上,Corona似乎将显示对象视为一个矩形,因此我无法通过任何方式满足我的需求。
然而,Corona物理功能允许您创建复杂的多边形以模仿任意形状以进行碰撞处理,但我没有找到类似的按钮方法。
有什么想法吗?
答案 0 :(得分:0)
这不是自动的,但这是一个可以尝试的解决方案,涉及一些设置和代码。不应该太难。
通过检查event.x
和event.y
参数来测试事件监听器中触摸的位置。您可以通过创建一个表格来提高效率,该表格包含每个条带的最左侧x和最右侧x值,例如从对象顶部到底部的10个像素。例如,考虑这座山:
使用每个浅蓝色矩形底部的y坐标作为表格的索引,并将左x和右y值加载到该条目中,例如:
hitTable[120] = {245,260}
hitTable[130] = {230,275}
依旧......
然后,在触摸事件监听器中,将event.y
参数强制转换为一个表索引,或者使用函数,或者只是测试以查看它最接近的值。然后,使用该表条目,查看event.x
是否在您为该y坐标指定的x坐标之间。如果没有,请忽略触摸。
您甚至可以构建表并将其指定为图像本身的属性,如下所示:
hitTable = {}
hitTable[120] = {245,260}
hitTable[130] = {230,275}
... and so on, then ...
myMountain.hitTable = hitTable
完成后,您可以在触摸事件监听器中以event.target.hitTable
的形式访问该表。
答案 1 :(得分:0)
你能用90度角尖创建山峰吗?然后,如果你将山峰分开并将它们旋转45度,它们就会变成方形。每次导出它们后,将它们导入Corona,然后将它们向后旋转45度。我没有测试过这个,但我想它可能会起作用:)