Lua - 为newSprite添加物理引擎

我正在为班级做一款2D平台游戏,但是我的精灵表无法与物理效果配合使用。我收到以下错误消息:

game.lua:82: ERROR: table expected. If this is a function call, you might have used '.' instead of ':'

我尝试将该行改为“:”而不是“.”,但仍不能正常工作。这是我的程序代码:

sequenceData = {
    {name = "running", frames={6,7,8,9,10}, time = 500, loopCount = 1},
    {name = "jump", framse={5}}
}
characterSheet = graphics.newImageSheet("/images/agent.png", {sheetContentWidth = 306, sheetContentHeight = 53})
character = display.newSprite(characterSheet, sequenceData)
--character = display.newImage( "/images/agentSingle.png", 50, 50 )

--this is line 82 \/
physics.addBody(character, "dynamic", { density=1.0, friction=0.5, bounce=0.0 })

但我很困惑,因为如果我使用newImage而不是newSprite(已注释的行),它就可以正常工作。

点赞
用户2653067
用户2653067

先检查您的精灵是否已创建并正在播放动画。然后将其添加到物理系统中。

 local dummySprite = require("objects.dummySprite")
local dummySheet = graphics.newImageSheet(_G.IMAGEPATH.."DummySprite.png", dummySprite:getSheet())

local playerGroup = display.newGroup()

local sequenceData =
{
    { name="jumping", start=51, count=9, time=1000, loopCount=0 }
}

local player = display.newSprite(playerGroup, dummySheet, sequenceData)
player:setSequence("jumping")
--player.xScale = .5; player.yScale = .5 (tried scaling as well, same poor results)
player.width = 32; player.height = 32
player:setReferencePoint(display.c)
player.x = x; player.y = y; player.name = name

--添加物理效果
physics.addBody(player, "static", { friction=friction, density=density, bounce=bounce, filter=_G.FILTER_PLAYER })
2015-11-18 05:46:54