我正在开展一个小型个人项目,以便适应Corona SDK,我创建了一个静态地板和两个静态墙,然后我创建了一个球,并为其添加了动态物理。我做了一个功能,当加速度计处于活动状态时移动球,但我似乎无法正确。我可以使对象静止并且它可以移动,但是它不会与动态墙壁或地板交互,我可以使对象保持静态,但是当游戏加载时,球会弹出屏幕,应用程序崩溃。
不知道如何处理这个问题,我已经查看了日冕的示例项目。
这是我的代码。
--Set accelerometer framerate
system.setAccelerometerInterval( 60 )
--Creates Hero
local function player(xCenter, yCenter, radius )
local player1 = display.newImageRect( "images/hero.png", 32, 31 )
player1.x = xCenter
player1.y = yCenter
player1:setFillColor( 100,100,100 )
physics.addBody( player1, "dynamic", {bounce = 0, density=1, friction=.1, radius=radius} )
return player1
end
local hero = player(startPlatform.x+20, startPlatform.y-15, 15)
local function heroMovex(event)
hero.x = hero.x + (hero.x*event.xGravity)
hero.y = hero.y + (hero.y * event.yGravity-1)
end
Runtime:addEventListener("accelerometer", heroMovex)
答案 0 :(得分:2)
将加速度计的重力应用于物理机构有多种方法。而不是通过调整其坐标直接移动身体,尝试设置hero
的速度以匹配倾斜:
local function heroMovex( event )
hero:setLinearVelocity( 10 * event.xGravity, -10 * event.yGravity )
end
或者,如果您不介意将加速度应用于所有事物,只需将重力绑定到加速度计:
local function tiltGravity( event )
physics.setGravity( 10 * event.xGravity, -10 * event.yGravity )
end
Runtime:addEventListener("accelerometer", tiltGravity)