在基于物理的 CoronaSDK 游戏中,我有许多彩球。它们都相互碰撞。但是我对那些按颜色组合在一起的球很感兴趣。
因此,每个球都有一个“颜色”属性:ball.color = "red"
例如。
在碰撞侦听器中,我检查球是否与具有相同颜色的球发生碰撞:
local function ballCollision ( self, event )
local otherBall = event.other
if ( otherBall.color == self.color ) then
-- do some stuff here
if ( event.phase == "began" ) then
-- add the ball to the group
else
-- remove the ball from the group
end
end
end
ball.collision = ballCollision
ball:addEventListener ( "collision" )
现在,我正在考虑创建一个全局的、模块范围的“组”表,我可以在其中保留一个分组球表。began
在碰撞的每个阶段,我都可以将一个球添加到另一个对撞机所属的组中。
在每个ended
阶段,我都可以将其从组中删除。
但这提出了一些(我认为相当繁重)计算,因为当较大的群体被一个球分成几个较小的群体时......
有没有更好的解决方案来执行此操作?喜欢 - 获取“链接”对象的列表,或者至少获取每个物理对象的对撞机列表?