Lua 电晕物理-在特定方向施加力?
我是科罗纳的新手,作为一种学习练习,我正在制作一个简单的“keepie uppie”游戏(http://en.wikipedia.org/wiki/Keepie_uppie)使用电晕SDK物理引擎 我所有方面都正常工作,除了“踢”上的球运动。我正在使用触摸事件“开始”阶段,通过applyLenearImpulse方法应用踢腿 我的问题是,球的行为通常就像是从上方施力一样,导致它朝着游戏环境的地板射出。这是尽管在球的接触点上施加了力 我提出了以下解决方法: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(
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
如果单击事件已结束,它将获取当前球的线速度并将其反转
我不知道你的代码在做什么(看不到如何运行它),所以我在一分钟内完成了:)
我已经爱上科罗纳不到一周了,就这样,谢谢-我还没意识到力可能是一个负值!是的,这就是你告诉它力所面对的方向。这两个数字定义了一个向量