PICO-8 中变量更新错误

我正在使用 PICO-8 和 Lua 练习编写一个简单的贪吃蛇游戏。

我试图创建一个副本来保存旧的身体位置并沿着身体长度更新,以使身体跟随头部移动。

我创建了一个 t_old 变量来存储原始的身体位置,但它与 t 同时更新。我无法解释为什么会这样。

function train_move(t,d)
 local t_old=t --获取已有的
 --根据移动方向更新头部
 if d==0 then
  t[1].x-=sprite_size --左
 elseif d==1 then
  t[1].x+=sprite_size --右
 elseif d==2 then
  t[1].y-=sprite_size --上
 else
  t[1].y+=sprite_size --下
 end
 --更新身体 **注意这里 t[1]==t_old[1] ??
 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
点赞
用户2858170
用户2858170

表格值通过引用复制。

tt_old 指向相同的表格值。

阅读此如何通过值复制 Lua 表格?

2021-03-07 16:52:16