0

我正在尝试使用 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 扭曲的东西

4

1 回答 1

0

我不懂 Lua 的语言,但是,我了解光线投射的基础知识。据我所知,问题可能是 FOV 尺寸过大或角度未固定(当高于 360 度/2PI 弧度时减去 360 度/2PI 弧度,或者当低于 0 时添加 360 度/2PI 弧度)。如果你不“修复”角度,你可能会得到不正确的光线命中位置,甚至在某些情况下,会导致 GUI 崩溃。如果你有一个大的 FOV,世界就会出现扭曲。

64 度 FOV:

FOV 128 度: 在此处输入图像描述

于 2021-01-12T15:14:36.977 回答