Love2D Lua 错误:尝试调用字段 'isDown'(一个空值)

这是我的 Love2D 代码:

function love.load()
    ninja = love.graphics.newImage("Ninja.png")
    x = 0
    y = 0
    speed = 256
end

function love.update(dt)
    if love.keyboard.isDown("right") then
        ninja = love.graphics.newImage("NinjaRight.png")
        x = x + (speed * dt)
    end

    if love.keyboard.isDown("left") then
        ninja = love.graphics.newImage("NinjaLeft.png")
        x = x - (speed * dt)
    end

    if love.keyboard.isDown("down") then
        y = y + (speed * dt)
    end

    if love.keyboard.isDown("up") then
        y = y - (speed * dt)
    end

    if love.joystick.isDown(joystick, 1, 2, 3, 4) then
        a = 5
    end
end

function love.draw()
    love.graphics.draw(ninja, x, y)
end

我想让游戏识别连接的控制器。但我运行游戏后收到以下错误:

attempt to call field 'isDown'(a nil value)

问题出在哪里?

点赞
用户1150918
用户1150918

LÖVE 0.9.0 版本起,与游戏手柄相关的 isDown() 函数被移动到另一个 namespace/table/你叫它什么都可以,或更多类似于对象的结构中。[1]

因此,在你的代码中,你应该像这样使用它:

-- 获取所有已连接的游戏手柄表:
local joysticks = love.joystick.getJoysticks()

-- 选择第一个:
local joystick = joysticks[1]

if joystick:isDown(1, 2, 3, 4) then
    a = 5
end

其中 joystick 是你的 Joystick 对象。[2]

需要注意的是,love.keyboard.isDown() 的用法尚未更改。但我猜,迟早也会改变。

[1] https://love2d.org/wiki/Joystick:isDown

[2] https://love2d.org/wiki/love.joystick.getJoysticks

2015-02-26 14:57:20