【问题标题】:Corona sdk, get the rect of a sprite to generate his physics bodyCorona sdk,获取精灵的矩形来生成他的物理体
【发布时间】:2014-01-04 13:04:36
【问题描述】:

我有一个像这样的精灵,在一个类中实例化,其中包括一个使用texture packer 生成的文件,其中包含所有精灵:

local sheetInfo = require("db.sprites." .. self.element["name"])
self.sheet = graphics.newImageSheet( "db/sprites/" .. self.element["name"] .. ".png", sheetInfo:getSheet() )
self.sprite = display.newSprite( self.sheet , element["animations"] )
self.sprite.xScale, self.sprite.yScale = 0.3, 0.3

现在,我的目标是动态生成一个适合精灵的物理矩形。在正常情况下,这很简单。我的代码是:

function defineBody(sprite)
    if (sprite.xScale == 1 and sprite.yScale == 1) then return nil end
    local shape = {}
    local wx, wy = sprite.width * sprite.xScale/2, sprite.height * sprite.yScale/2
    local nwx, nwy = sprite.width * sprite.xScale/-2, sprite.height * sprite.yScale/-2
    shape[1],shape[2] = nwx, nwy
    shape[3],shape[4] = wx, nwy
    shape[5],shape[6] = wx, wy
    shape[7],shape[8] = nwx, wy
    return shape
end

然后我这样调用这个函数:

physics.addBody( self.sprite, self.element["physics"], { friction=0.5, bounce=0.3, shape=defineBody(sprite)} )

结果:

我的问题是:

当图像的锚点也发生变化时,如何更改该功能以使其正常工作?示例:

self.sprite.anchorX, self.sprite.anchorY = 0.5, 1

我尝试了很多,但我没有找到一个简单的方法来实现它。

【问题讨论】:

    标签: graphics lua box2d coronasdk game-physics


    【解决方案1】:

    你曾经检查过物理编辑器吗?您可以在其他物理对象中创建物理对象,就像您描述的那样。

    http://www.codeandweb.com/physicseditor

    我知道这是一个旧视频,但是当我第一次开始使用 Corona 时,这对我帮助很大:

    https://www.youtube.com/watch?v=DL_or4XKTfU

    希望这会有所帮助!

    【讨论】:

    • 我知道物理编辑器,但我正在寻找一种以编程方式为精灵构建“默认主体”的方法,因此我不必为每个精灵手动定义它......但是...... . +1 回答我:P
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-05
    • 2015-02-08
    • 1970-01-01
    相关资源
    最近更新 更多