Lua 电晕物理-在特定方向施加力?

Lua 电晕物理-在特定方向施加力?,lua,physics,game-physics,coronasdk,Lua,Physics,Game Physics,Coronasdk,我是科罗纳的新手,作为一种学习练习,我正在制作一个简单的“keepie uppie”游戏(http://en.wikipedia.org/wiki/Keepie_uppie)使用电晕SDK物理引擎 我所有方面都正常工作,除了“踢”上的球运动。我正在使用触摸事件“开始”阶段,通过applyLenearImpulse方法应用踢腿 我的问题是,球的行为通常就像是从上方施力一样,导致它朝着游戏环境的地板射出。这是尽管在球的接触点上施加了力 我提出了以下解决方法: function ball:touch(

我是科罗纳的新手,作为一种学习练习,我正在制作一个简单的“keepie uppie”游戏(http://en.wikipedia.org/wiki/Keepie_uppie)使用电晕SDK物理引擎

我所有方面都正常工作,除了“踢”上的球运动。我正在使用触摸事件“开始”阶段,通过applyLenearImpulse方法应用踢腿

我的问题是,球的行为通常就像是从上方施力一样,导致它朝着游戏环境的地板射出。这是尽管在球的接触点上施加了力

我提出了以下解决方法:

function ball:touch( event ) 

     -- only allow taps in bottom half of ball
     if ( event.y > ball.y and event.phase == "began" ) then

         -- temporarily move floor to just below ball
         floor.y = ball.y + ballSize

         local flipx = 0

         if(event.x > ball.x) then
             flipx = event.x - ballSize
         elseif(event.x < ball.x) then
             flipx = event.x + ballSize
         else
             flipx = event.x
         end

         ball:applyLinearImpulse( 0, kickForce, flipx, event.y)

     end
end
功能球:触摸(事件)
--只允许在球的下半部分敲击
如果(event.y>ball.y和event.phase==“开始”),则
--暂时将地板移动到球的正下方
地板y=球y+球尺寸
本地flipx=0
如果(event.x>ball.x),则
flipx=事件.x-球大小
elseif(event.x
在施加力之前,通过临时将地板位置移到球的正下方(然后通过enterFrame事件侦听器将地板移回正确的位置),上述方法可以发挥作用

我还发现,使用这个解决方案,我必须翻转事件触摸的x位置,否则它会水平反弹,与预期方向相反


上述情况显然并不理想。我应该在施加力之前停止球的运动吗?如果是,如何停止?还是我采取了完全错误的方法?

applylinearpulse是您想要使用的命令,但是在所有的解决方法中,您没有提到我将尝试的第一个调整:反转施加的力的方向。你发布的代码没有告诉我们“kickForce”的值;你试过否认吗

physics = require( "physics" )
physics.start()
physics.setGravity( 0, 9.8 )

ball = display.newCircle(400,100,100,100)
physics.addBody(ball)

function ballf(event)
    if event.phase == "ended" then
       vx, vy = ball:getLinearVelocity()
       ball:setLinearVelocity( -vx, -vy )
    end
end

ball:addEventListener("touch", ballf)
是一种简单的点击“反弹”球的方法

它的作用是:

function ballf(event)
        if event.phase == "ended" then
           vx, vy = ball:getLinearVelocity()
           ball:setLinearVelocity( -vx, -vy )
        end
    end
如果单击事件已结束,它将获取当前球的线速度并将其反转

我不知道你的代码在做什么(看不到如何运行它),所以我在一分钟内完成了:)


我已经爱上科罗纳不到一周了,就这样,谢谢-我还没意识到力可能是一个负值!是的,这就是你告诉它力所面对的方向。这两个数字定义了一个向量