【问题标题】:CORONA : physics, object changes its (x,y)CORONA:物理,物体改变它的(x,y)
【发布时间】:2015-08-13 10:54:07
【问题描述】:

我添加了我的对象(一个球),当它与一个对象碰撞时,即使我只在它的 y 位置(上下)施加力,球也会开始改变它的 x 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

我希望球保持它的位置而不开始随机移动。

【问题讨论】:

    标签: lua coronasdk physics


    【解决方案1】:

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

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

    【讨论】:

    • 我想到了,但我不太确定,我会试试然后给你答案......
    • 我施加力的那一刻(上下),球开始随机移动(上下左右)(我有一个滚动背景),所以它不起作用,有什么想法吗?跨度>
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-05-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-06-15
      • 1970-01-01
      • 2011-12-04
      • 1970-01-01
      相关资源
      最近更新 更多