【问题标题】:Corona sdk Physics objects not interact, but detect collisionCorona sdk 物理对象不交互,但检测碰撞
【发布时间】:2014-04-10 03:03:22
【问题描述】:

我正在和一个收集东西的人一起做游戏,比如硬币。我想检测这两者之间的碰撞,所以我可以取出硬币,但我不希望硬币与角色互动,因为现在它正在稍微减慢他的速度。尽管如此,它仍应在碰撞前与地面相互作用。感谢您的帮助!

function createCoin()
    for i = 1, 10 do
        coin = display.newCircle(0, 0, 16)
        coin.x = totallength - 1000 + i * 100
        coin.y = totalheight - 200

        physics.addBody(coin,
            {bounce = 0, friction = 1, density = 0}
        )

        game:insert(coin)
        coin.myName = "coin"
    end
end

createCoin()

local function onCollision(event)
    if event.phase == "began" then
        if (event.object1.myName == "coin" and
                event.object2.myName == "wheel") then

            event.object1:removeSelf();     
        end 
    end
end

【问题讨论】:

  • 能否请您澄清您的问题?减速是主要问题吗?它由friction 参数调节。您可以使用event.contact.friction 更改定义两个对象之间摩擦的行为。参考:Coronda SDK blogCorona docs。据我所知,这就是用于预碰撞处理的方法。

标签: lua coronasdk physics


【解决方案1】:

您无法在碰撞处理期间移除涉及碰撞的对象:请参阅 Collision event 页面上的“修改对象”。按照文档说明使用 timer.performWithDelay()。这应该可以防止您的硬币与玩家互动。如果这不起作用,您可以创建一个“幽灵”对象,它随处可见(相同大小的位置等但不可见)并作为传感器添加到物理中。传感器不会引起碰撞动态,但会触发事件。您还需要做如果需要取出硬币,则延迟取出硬币。

【讨论】:

  • 谢谢,我用硬币作为传感器,用另一个小物理体让它与地面相互作用。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-12-29
  • 1970-01-01
  • 2014-05-31
相关资源
最近更新 更多