Animation 错误错误参数#1用于绘制(应为drawable,Get table),尝试为主要角色设置精灵动画
卢阿和爱的新成员。我正在尝试为我的平台游戏设置角色动画。我知道我的钥匙和所有的工作,但我从来没有动画之前,所以我甚至不知道我是否在正确的方向或没有。我曾尝试查找指南,以便将我的代码与其他人的代码进行比较,但大多数指南似乎已经过时。最初我的播放器只是一个白色的长方形,但现在我试图给它一个精灵 这是我的主要任务Animation 错误错误参数#1用于绘制(应为drawable,Get table),尝试为主要角色设置精灵动画,animation,lua,love2d,Animation,Lua,Love2d,卢阿和爱的新成员。我正在尝试为我的平台游戏设置角色动画。我知道我的钥匙和所有的工作,但我从来没有动画之前,所以我甚至不知道我是否在正确的方向或没有。我曾尝试查找指南,以便将我的代码与其他人的代码进行比较,但大多数指南似乎已经过时。最初我的播放器只是一个白色的长方形,但现在我试图给它一个精灵 这是我的主要任务 local STI = require("sti") local anim8 = require('anim8') require("MC") fu
local STI = require("sti")
local anim8 = require('anim8')
require("MC")
function love.load()
map1 = STI("map/map1.lua", {"box2d"})
Physics = love.physics.newWorld(0,0)
Physics:setCallbacks(beginContact, endContact)
map1:box2d_init(Physics)
map1.layers.Solid.visible = false
background = love.graphics.newImage("assets/Base pack/bg.png")
mc:load()
end
function love.update(dt)
Physics:update(dt)
mc:update(dt)
end
function love.draw()
love.graphics.push()
love.graphics.scale(5,3)
love.graphics.draw(background)
love.graphics.pop()
map1:draw(0, 0, 2, 2)
love.graphics.push()
love.graphics.scale(2,2)
mc:draw()
love.graphics.pop()
end
function love.keypressed(key)
mc:jump(key)
if keypressed == "escape" then
love.event.quit(0)
end
end
function beginContact(a, b, collision)
mc:beginContact(a, b, collision)
end
function endContact(a, b, collision)
mc:endContact(a, b, collision)
end
我不认为我的main有什么问题,但我认为有必要重新创建这个问题(抱歉,如果它使这个问题太长)。现在我的mc.lua是我遇到问题的地方,因为我试图通过给玩家一个跳跃-空闲-行走动画来给他们自己制作动画,我想我稍后会给他们一个损坏-死亡动画
local anim8 = require('anim8')
mc = {}
spr_mc_walk = love.graphics.newImage("assets/mc sprites/1 Pink_Monster/Pink_Monster_Walk_6.png")
local w = anim8.newGrid(32, 32, spr_mc_walk:getWidth(), spr_mc_walk:getHeight())
walk = anim8.newAnimation(w('1-6', 1), 0.1)
spr_mc_idle = love.graphics.newImage("assets/mc sprites/1 Pink_Monster/Pink_Monster_Idle_4.png")
local i = anim8.newGrid(32, 32, spr_mc_idle:getWidth(), spr_mc_idle:getHeight())
idle = anim8.newAnimation(i('1-4', 1), 0.1)
spr_mc_jump = love.graphics.newImage("assets/mc sprites/1 Pink_Monster/Pink_Monster_Jump_8.png")
local j = anim8.newGrid(32, 32, spr_mc_jump:getWidth(), spr_mc_jump:getHeight())
jump = anim8.newAnimation(j('1-8', 1), 0.1)
obj_mc = walk
function mc:load()
self.x = 100
self.y = 0
self.width = 20
self.height = 60
self.xvel = 0
self.yvel = 0
self.maxspeed = 200
self.acceleration = 4000 -- max speed
self.friction = 3900 -- how long it takes them to reach max speed
self.gravity = 1000
self.jumpAmount = -500
self.grounded = false
self.physics = {}
self.physics.body = love.physics.newBody(Physics, self.x, self.y, "dynamic")
self.physics.body:setFixedRotation(true)
self.physics.shape = love.physics.newRectangleShape(self.width, self.height)
self.physics.fixture = love.physics.newFixture(self.physics.body, self.physics.shape)
end
function mc:draw()
love.graphics.draw(obj_mc, self.x, self.y)
end
这是我的大部分mc或player功能,除了移动之类的,但这有所有我感到困惑的代码。我很确定我写的代码是对的,我只是对如何真正实现它感到困惑,因为我已经把它写下来了。我认为仅仅做draw函数实际上会绘制角色的空闲版本,但这就是我得到错误的地方。如果你需要更多的代码或更多的细节,请告诉我。
此时发生的错误是
Error
MC.lua:41: bad argument #1 to 'draw' (Drawable expected, got table)
Traceback
[C]: in function 'draw'
MC.lua:41: in function 'draw'
main.lua:30: in function 'draw'
[C]: in function 'xpcall'
我已经有一段时间没做这些了,但我相信在本例中,
obj_mc
,是一个帧表。在更新过程中,您需要遍历它们
local anim8timer = 0
local anim8index = 1
local anim8rate = 0.2 -- pick an animation rate that looks good for your game
function mc:update( dt )
anim8timer = anim8timer +dt -- add delta time
if anim8timer >= anim8rate then
anim8timer = anim8timer -anim8rate -- reset timer
anim8index = anim8index +1 -- next frame
if anim8index > #obj_mc then anim8index = 1 end -- loop frames
end
end
function mc:draw()
love.graphics.draw( obj_mc[ anim8index ], self.x, self.y )
end
它们可能有一个内置函数来完成其中的一些功能,所以在Love2D论坛中查找类似的内容。哪一行#错误是在?我的道歉我以为我已经补充了错误发生在mc的第41行。Luath错误是说
walk
(一个包含动画的变量)无法绘制到屏幕。试着确保你调用的API调用返回一个“可绘制”的对象——或者一个对象。我对你的意思有点困惑,我是不是不告诉它返回我认为是对象本身的图像?或者我错过了什么?我正在使用的anim8函数已经内置了循环。你可能会这么认为,但显然不是。obj_mc是一张桌子<代码>错误MC.lua:41:错误参数#1到“draw”(应为Drawable,得到table)无法绘制表格。首先,试着弄清楚里面是什么<代码>对于i=1,#obj_mc do打印(类型(obj_mc[i])结束