光线投射怪异地弯曲世界。PICO-8。(LUA)

我正在尝试使用PICO-8(这是一个有许多限制的2D引擎)制作类似于Wolfenstein3D游戏,但结果世界非常怪异。

运行中的Gif

我的代码:(警告LUA!语言难以理解并且从1开始计数…!)

function ray_cast()
  points = {}
  for i=1,64 do
    points[i] = -1
  end

  for o = -31,32 do
    local angle = player.lvec - o/256


    for i=0,96 do
      local x,y
      x = i * cos(angle)
      y = i * sin(angle)

      if mget((x+player.x)/8,(y+player.y)/8) == 1 then

        local tx = i-1 * cos(angle)
        local ty = i-1 * sin(angle)

        local dis = sqrt((tx^2+ty^2))

        points[o+32] = dis*cos(angle-player.lvec)
        break
      end
    end
  end
end

我在PICO-8的Discord上寻求了帮助,有人说可以帮我,但经过很多消息交流,仍然没有得到我想要的解决方案。

编辑:新GIF 事物的扭曲

点赞
用户14986403
用户14986403

我不懂Lua语言,但是我了解射线投射的基础知识。从我所看到的情况来看,问题可能是FOV大小过大或角度不固定(当角度高于360度/2PI弧度时减去360度/2PI弧度,当角度低于0时加上360度/2PI弧度)。如果您不“修正”角度,可能会得到不正确的射线命中位置,甚至在某些情况下会导致GUI崩溃。如果FOV过大,则整个世界会看起来扭曲。

64度的FOV:

128度的FOV:

2021-01-12 15:14:36