You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

光线投射渲染中y-shearing地平线偏移转换为俯仰角的实现方法

光线投射FPS游戏y-pitch偏移量转俯仰角问题

我正在开发一款第一人称射击游戏,采用光线投射(raycasting)方式渲染游戏世界。目前我已成功实现y轴剪切(y-shearing)功能,可支持上下视角调整,符合预期会存在少量形变。当y-pitch值为0时,细红线标注的地平线位于屏幕中心位置。
center
当视角完全向下时,我的y-pitch值等于-half_screen_height,因为该偏移量会被叠加到地平线位置上,此时可以看到同一条细地平线位于屏幕靠近顶部的位置。
down
完全向上看时则是相反的情况。

现在我遇到的问题是,我需要加入垂直瞄准功能,来攻击高度大于0的敌人,例如下图所示:
瞄准敌人示例
目前我可以实现2D弹道投射计算:我已经获取了玩家的视角角度,在循环中按照固定步长更新X和Y坐标即可,计算公式为x += cos(theta) * step 以及 y += sin(theta) * step,这部分实现比较简单。但如果要做3D空间的弹道投射,我需要另一个角度参数来表示视角上下俯仰的幅度。请问有没有方法可以将y-pitch地平线偏移量转换为对应的俯仰角?

编辑澄清

有评论者认为这属于高度变化,实际并非如此。下方GIF演示了y轴剪切(前段演示)和玩家高度变化(后段演示)的区别:给定y-pitch值时,该值会被叠加到每道墙体切片在屏幕上的Y轴位置,使其向上移动,这不属于高度变化。
shear vs altitude change
注:受限于平台2MB的文件大小限制,该GIF经过了高度压缩。

内容的提问来源于stack exchange,提问作者Caspian Ahlberg

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 12:54:04