光线投射渲染中y-shearing地平线偏移转换为俯仰角的实现方法
光线投射FPS游戏y-pitch偏移量转俯仰角问题
我正在开发一款第一人称射击游戏,采用光线投射(raycasting)方式渲染游戏世界。目前我已成功实现y轴剪切(y-shearing)功能,可支持上下视角调整,符合预期会存在少量形变。当y-pitch值为0时,细红线标注的地平线位于屏幕中心位置。
当视角完全向下时,我的y-pitch值等于-half_screen_height,因为该偏移量会被叠加到地平线位置上,此时可以看到同一条细地平线位于屏幕靠近顶部的位置。
完全向上看时则是相反的情况。
现在我遇到的问题是,我需要加入垂直瞄准功能,来攻击高度大于0的敌人,例如下图所示:
目前我可以实现2D弹道投射计算:我已经获取了玩家的视角角度,在循环中按照固定步长更新X和Y坐标即可,计算公式为x += cos(theta) * step 以及 y += sin(theta) * step,这部分实现比较简单。但如果要做3D空间的弹道投射,我需要另一个角度参数来表示视角上下俯仰的幅度。请问有没有方法可以将y-pitch地平线偏移量转换为对应的俯仰角?
编辑澄清
有评论者认为这属于高度变化,实际并非如此。下方GIF演示了y轴剪切(前段演示)和玩家高度变化(后段演示)的区别:给定y-pitch值时,该值会被叠加到每道墙体切片在屏幕上的Y轴位置,使其向上移动,这不属于高度变化。
注:受限于平台2MB的文件大小限制,该GIF经过了高度压缩。
内容的提问来源于stack exchange,提问作者Caspian Ahlberg
相关产品推荐
相关产品推荐

