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
相关产品推荐
相关产品推荐

