重发空间抛物自瞄教程内涵逻辑截图

2019/11/24452 浏览游戏开发攻略
补发几张活动结构视图(均不计入图片次序)
TapTap
TapTap
TapTap
声明:自己做的 该逻辑运算数值较大 请谨慎使用 秒灰屏的玩家可以退一步选择功能没有那么齐全的平面抛物自瞄
核心公式:斜抛运动轨迹方程推导式如下图(图一)(源于百度)
TapTap
其中阿尔法为抛射角 V0为初速度 g为重力系数
转换到我们游戏里则式子中的X0为坐标Z Y0为坐标Y
核心公式分析:公式中的±表明这个式子可能有两个答案 也就是说算出的抛射角会有两个 一个是piu~~~~boom! 另一个是piu~~~~~~~~~~~~~~~~~boom!(自行体会)再看公式 开平方根为零则正负号无影响 不能为负 所以为正 V0方为正 g为正 则括号内正号必然大于括号内负号 而括号处于分子位置 因此正号的正切值必然比负号的正切值大 在零度到九十度之间(抛射角范围)时 抛射角大小与其正切值大小成正相关(正比例)于是在式子中选择正号就是较大的抛射角 负号就是较小的抛射角(因为本人的学渣属性导致这里的知识可能表述的不准确 但是是正确的就对了)
注意事项:与平面抛物自瞄相比 空间抛物自瞄的激光必须与水平转轴相对静止但不能随垂直转轴移动 切记(视频中有详细结构展示)因为逻辑中要用到敌人局部坐标的Z分量 如果激光方向跟随抛射角 则Z分量会一直变化 从而无法瞄准
那么开始我们的逻辑教程 先来小角度的 也就是炮弹飞行时间较短的
已知量:敌人局部坐标Z分量(公式的X)敌人局部坐标Y分量(公式的Y)敌人局部坐标X分量(用于水平瞄准)初速度还是20(为啥是20请查阅平面抛物自瞄教程)重力系数9.8 求取量:抛射角
首先 用逻辑系统获取已知量敌人局部坐标的XYZ如下图(图二)
TapTap
对于上图的补充说明:敌人局部Y要取其相反数 我也不知道为啥 或许是激光对于局部坐标的判定是颠倒的 反正直接用相反数就没错了 敌人局部Z修正是我自己为了命中一倍缩放核心的一个修正后数值 这个数值原本是敌人局部Z加上0.1 因为视频中结构明确表明 激光检测到的敌人相对坐标Z分量比CJD距离敌人长上0.1 由于一些不明原因(可能是炮弹体积判定 爆炸范围判定 出膛位置判定与我认为的不相符)导致我明明看到炮弹爆炸范围完全覆盖核心甚至肉眼观察炮弹精确撞击了核心 但是有时候核心就是不死 很难受 于是我被迫修正Z分量提高对于一倍核心的命中率 而且这个修正数值可能受结构形态影响 暂时没有从根本上解决的办法 但是对于稍大一些的静止机械 命中率是百分之百的 对于活动机械的命中率我没测试过 但是这个只是受到转轴参数影响 与逻辑方面关系不大
然后我们先把次要部分解决 那就是水平方向的瞄准(你懂的)如下图(图三)
TapTap
接下来我们来算数 老规矩 再来一遍公式如下图(图四)
TapTap
没啥好说的 就是算 如下两图(图五图六)名称我也写的很详细 都能看懂吧
TapTap
TapTap
对于上图(图六)补充说明:算出抛射角后转换为垂直转轴活动系数并写出对应机械活动反馈语句
最后 松开按钮所有转轴归零(关闭自瞄)如下图(图七)
TapTap
那么角度较小的空间抛物自瞄就做好了 角度较大的逻辑与角度较小的逻辑差异只有一行语句 其他统统一样 下图(图八)第28行语句是大角度与小角度唯一不同的逻辑语句 你只需要把小角度的复制出来 然后找到这一行 把减法运算换成加法运算即可
TapTap
到这里大小角度的空间抛物自瞄就全部做完了 如果你看到这里还有不明白的地方 请查阅平面抛物自瞄教程(也是我发的)只要你按照上述所有步骤制作 你就能得到如开头视频中的效果相差无几的自瞄炮
功能效果总结分析:抛物自瞄是好东西 但是受到炮弹速度限制 可能无法用于仿真(呼吁程序员把限制数值调高)但是在竞技方面有一定存在的价值 修改地图重力系数能有效提高射程
结束 希望有帮助 谢谢观看
8
17
55