找回密码
 点一下
查看: 969|回复: 0

3D 射击的随笔

[复制链接]
发表于 2013-6-15 11:37:05 | 显示全部楼层 |阅读模式
首先在我们确定玩家的3D射击视角后,触发器内的一个API将可以启用,
镜头-玩家的横轴
镜头-玩家的纵轴
这两个返回的是一个实数
这个实数是什么意思呢
顾名思意,横轴 指的是玩家在当前的镜头轴上左右旋转的角度,纵轴为上下旋转
3D射击函数最麻烦的地方在哪里? 其实就是在于高度的计算以及碰撞,至于平面2D的计算我想大家都玩烂了
这样我们来添加一个实数的多重运算
变量Z = 单位当前的高度+((*(-1)(400)(玩家1的当前镜头纵轴))*0.2)
上面的变量是什么意思呢
这个就是单位的高度自增计算,(*(-1)(400)(玩家1的当前镜头纵轴))会返回一个-400 到400的数字,获得一个数字后,在乘以0.2(高度增加幅度,越小增加幅度越慢,3D环境下打到目标点的速度越慢,当然,高了也可能就过了)这样3D子弹的高度问题就解决了
至于碰撞问题。首先大家要明确一个问题 3D 环境下碰撞是什么 什么是碰撞
我们可以吧单位看成一个盒子,现在也就是说如果我们要给子弹体加上碰撞 我们也需要给子弹画一个盒子,实现的方法不外乎给目标单位一个区域,或者给自己一个区域,使用API当单位进入单位的区域内怎么怎会的 然后判定单位在目标单位高度+N 并目标高度-N内 就可以 就解决了哟 这样其实就是给了子弹单位一个盒子实现了碰撞
不过已知问题可能由于触发器的检测间隔0.0625秒所以如果子弹飞得太快会检测过慢 斜面攻击情况下有可能会检测失败 不过我目前换了种算法 所以在研究解决方案

您需要登录后才可以回帖 登录 | 点一下

本版积分规则

Archiver|移动端|小黑屋|地精研究院

GMT+8, 2024-4-28 08:42 , Processed in 0.114625 second(s), 23 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表