我试图用pico-8 (这是一个有很多限制的2d引擎)制作一个类似wolfenstein3d的游戏,结果世界变得非常怪异。
我的代码:(警告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冲突中寻求帮助,有人说他们可以帮助我,但经过大量的消息传递,仍然没有得到我想要的解决方案。
编辑:新的GIF Distortion of things
发布于 2021-01-12 23:14:37
我不知道Lua的语言,但是我理解光线投射的基础知识。在我看来,问题可能是FOV尺寸太大或角度不固定(当大于360度/2pi弧度时减去360度/2pi弧度,或者当低于0时添加360度/2pi弧度)。如果你不“修复”角度,你可能会得到不正确的光线命中位置,甚至在某些情况下,会使GUI崩溃。如果你有一个大的FOV,世界将看起来是扭曲的。
64度的FOV:

128度的FOV:

https://stackoverflow.com/questions/65684526
复制相似问题