1

我正在从头开始构建一个简单的蛇游戏,作为 PICO-8 和 Lua 的练习。

我试图通过创建旧身体位置的副本并沿长度更新来让身体跟随头部。

我创建了一个t_old变量来存储原始身体位置,但它与t. 我没有解释为什么。

function train_move(t,d)
 local t_old=t --grab existing
 --update head based on direction of movement
 if d==0 then 
  t[1].x-=sprite_size --left
 elseif d==1 then
  t[1].x+=sprite_size --right
 elseif d==2 then
  t[1].y-=sprite_size --up
 else
  t[1].y+=sprite_size --down
 end
 --update body **I have noticed that t[1]==t_old[1] here??
 for i=2,#train do
  t[i].x=t_old[i-1].x
  t[i].y=t_old[i-1].y
 end
 return t
end
4

1 回答 1

2

通过引用复制表值。

tt_old参考相同的表值。

阅读这篇文章如何按值复制 Lua 表?

于 2021-03-07T16:52:16.703 回答