我正在使用画布在 JavaScript 中构建光线投射引擎,我已经构建了光线投射器并且其完全正常工作,除了一个问题,有鱼眼效果,我尝试进行修正
var d = (Math.sqrt( Math.pow((rays[i].x - rays[i].newX),2 )+Math.pow((rays[i].y - rays[i].newY),2 )))
// my attempted corection
var correctedDis = d * Math.cos((rays[i].rayAngle - player.rot))
Run Code Online (Sandbox Code Playgroud)
但它不会产生任何结果:
我仔细检查了数学,我没有发现任何问题,但我可能仍然做错了,因为我七年级,还没有学到很多关于三角学的知识,(只参加了可汗学院课程)所以有人可以让我知道是否有更好或更简单的方法,提前谢谢您。
(我还认为我可能做错了阴影,如果有人可以帮忙的话。)
编辑:我忘了包括您可以使用 WASD 键来控制演示,并且图像被翻转,但这将是一个简单的修复。 如果您需要的话,我的完整代码:
var d = (Math.sqrt( Math.pow((rays[i].x - rays[i].newX),2 )+Math.pow((rays[i].y - rays[i].newY),2 )))
// my attempted corection
var correctedDis = d * Math.cos((rays[i].rayAngle - player.rot))
Run Code Online (Sandbox Code Playgroud)
const scale = (num, in_min, in_max, out_min, out_max) => {
return (num - in_min) * (out_max - out_min) / (in_max - in_min) + …
Run Code Online (Sandbox Code Playgroud)似乎我们可以显示图层,甚至可以zPosition
在Core Animation中为不同的图层使用不同的图层,但是,确实没有简单的方法可以显示某些厚度的东西吗?
例如,一块2mm厚的奶酪,或者一个按钮或一个倾斜的硬币,因此厚1mm?以某种方式必须通过添加另一层来模拟厚度来显示厚度?因此,此2.5D是更基本的2.5D,在3D世界中仅限于平面2D图像...而某些2.5D(例如某些RPG游戏(如Diablo))有时也称为2.5D,但对象在那种情况下(例如建筑物)实际上可以具有宽度,长度和高度(厚度)。因此,实际上,对我而言,这些实际上是3D的……除了大多数对象位于侧面倾斜的2D地图上。
回到问题...是真的吗?在iOS中,它确实仅限于平面2D图像的3D世界,并且转到任何width
x length
x height
都需要进入OpenGL / CAEAGLLayer
吗?
所以,我真的很想开始一个模仿这种2.5D风格的HTML5/JavaScript项目:http: //superflashbros.net/2009/02/22/blue-rabbits-climate-chaos/
我个人试图远离第三方脚本,只是保持代码的核心纯JavaScript.但是,我对trig的了解不是最好的,那么解决这个观点的最合适的方法是什么呢?我本质上想要一个用2D精灵制作的游戏,但是地平面(也许是建筑物,如在flash游戏中)倾斜以赋予它3D感觉.我不想制作一个"模式7"引擎(即像马里奥赛车这样的SNES游戏),因为我的理解是分段的.
我应该研究哪些建议或资源?