【问题标题】:Moving an object using the accelerometer with Corona SDK使用带有 Corona SDK 的加速度计移动对象
【发布时间】:2015-05-12 09:08:30
【问题描述】:

我正在做一个小型个人项目来熟悉 Corona SDK,我创建了一个静态地板和两个静态墙,然后我创建了一个球并为其添加了动态物理。我做了一个功能,可以在加速度计处于活动状态时移动球,但我似乎无法正确处理。我可以使对象静止并且它可以正常移动,但它不会与动态墙壁或地板交互,我可以使对象静止但是当游戏加载时球只是从屏幕上射出并且应用程序崩溃。

不知道如何解决这个问题,我已经查看了 corona 中的示例项目。

这是我的代码。

--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)

【问题讨论】:

    标签: lua coronasdk


    【解决方案1】:

    有多种方法可以将加速度计的重力应用到您的物理实体上。与其通过调整坐标直接移动身体,不如尝试设置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)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-12-11
      • 1970-01-01
      • 2014-04-22
      • 2011-09-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多