У меня есть спрайт, как это, инстанс внутри класса, который включает в себя файл, созданный с texture packer, со всеми спрайтами:Corona SDK, получить прямоугольник спрайта, чтобы генерировать Физику тела
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
Я пробовал много, но я не нашел простой способ добраться до него.
Я знаю редактор физики, но я искал способ программно создать «тело по умолчанию» для спрайтов, поэтому мне не нужно вручную определять его для каждого спрайта ... но ... +1 для ответа меня: P – ProGM