检测动态主体何时停止与Corona SDK上的传感器重叠

时间:2015-04-01 23:53:31

标签: lua corona physics collision overlap

我正在制作一个主要基于动态物理体的游戏,现在我需要在该元素与传感器主体的其他项目(箭头)重叠时对该元素施加力。

我知道我可以在箭头开始发生相位碰撞事件时立即开始施力,但是,我怎样才能检测何时停止施加此力?

有没有办法知道动态对象何时超出传感器主体的范围?

1 个答案:

答案 0 :(得分:1)

好的,经过多次尝试,甚至在考虑分离轴定理后,我更容易做到这一点(因为SAT对我来说太慢了):

element:addEventListener( "collision", function(event) 
    if (event.other.id=="ball") then
        if (event.phase=="began") then
            element.collision_counter=element.collision_counter+1
        elseif (event.phase=="ended") then
            element.collision_counter=element.collision_counter-1
        end
    end
end)

因此,根据我的理解,每次验证event.phase=="began" Shape上的Body时发生event.phase=="ended"时,似乎会调用Shape对象不再与同一个Body发生碰撞。现在,使这段代码运行良好的“秘密”是,如果对象仍在Shape但与另一个event.phase=="began"发生冲突,则首先调用Shapeevent.phase=="ended",然后才会调用element

在此之后,因为我想要影响物体在Runtime:addEventListener( "enterFrame", scene )(我的情况下是箭头)内的速度,我只是在我的场景中使用了function scene:enterFrame() if (element.collision_counter>0) then local rad=math.rad(element.rotation) other_object:applyForce( 15, 0, other_object.x, other_object.y ) end end 代码如下:

{{1}}