You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

GD50(CS50游戏开发课)FlappyBird项目Lua语法错误求助

解决Bird.lua:19 attempt to index field 'wasPressed' (a function value)错误

错误出在bird:update方法的按键检测代码里——你把love.keyboard.wasPressed当成了表来使用,但它本质是一个函数,不能用['space']这种表索引语法访问。

修改后的代码

将update方法里的按键判断行改为函数调用形式:

function bird:update(dt)
    self.dy = self.dy + GRAVITY * dt

    -- 把方括号[]替换为圆括号(),传入按键名称作为参数
    if love.keyboard.wasPressed('space') then
        self.dy = -5
    end

    self.y = self.y + self.dy
end

原因说明

在GD50课程的框架中,wasPressed是一个封装好的工具函数,用于检测指定按键是否在当前帧被按下。它的正确用法是传入按键名称字符串作为参数,而非像表那样通过键值对访问。你之前的写法把函数当成了表,Lua因此抛出了索引函数值的错误。

内容的提问来源于stack exchange,提问作者Felipe

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.23 03:22:43