Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/lua/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Animation 错误错误参数#1用于绘制(应为drawable,Get table),尝试为主要角色设置精灵动画_Animation_Lua_Love2d - Fatal编程技术网

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])结束