CORONA:物理,对象改变它(x,y)

时间:2015-05-30 16:51:35

标签: lua corona physics

我添加了我的物体(一个球),当它与一个物体碰撞时,球开始将它改变为y位置,即使我在它的位置上下施加力(上下)

local physics = require "physics"
physics.start()
--physics.setContinuous( false ) 

    ball = display.newImage("ball.png") --MAIN OBJECT
    ball.x = 100; ball.y = 100
    physics.addBody(ball, "dynamic", {density=.05, bounce=0.1, friction=.2, radius=12})
    screenGroup:insert(ball)
    ball.myName = "ball"

function activateBall(self, event) --APPLY FORCE FUNCTION
    self:applyForce(0, -1.5, self.x, self.y)

end

function onCollision (event) --BALL COLLIDES WITH JUST THIS OBSTACLES 

    if (event.object1.myName == "obst1") or (event.object1.myName == "obst2") then 
    storyboard.gotoScene("restart", "fade", 400)
    audio.stop()

    end

我希望球保持位置而不会随意移动。

2 个答案:

答案 0 :(得分:0)

快速解决方案是简单地重置每个帧中的球x位置。

local ballListener = function( event )
    ball.x = 100
end
Runtime:addEventListener( "enterFrame", ballListener )

答案 1 :(得分:0)

也许在applyForce()之前,你可以setLinearVelocity()将x值设为0,y为y值的值getLinearVelocity(),然后是applyForce()。可能会重置碰撞后的x速度。