我做了一款射击游戏,想实现自动追踪子弹。
目前我的思路是遍历所有敌人,找到最近的,然后沿着这个方向发射子弹。
想要:一直追踪敌人(弧度),大家有好的思路吗
我做了一款射击游戏,想实现自动追踪子弹。
目前我的思路是遍历所有敌人,找到最近的,然后沿着这个方向发射子弹。
想要:一直追踪敌人(弧度),大家有好的思路吗
1最简单的做法,时刻修改子弹的方向,永远朝着目标
2时刻修改子弹的方向,但是不会立即朝着目标,也就是方向修改需要一定时间,存在一个转向速度,这样子弹会有迟滞转弯的感觉。
3开发者说:“坂野马戏”的炼成,游戏中导弹制导的一种设计思路 板野马戏,请看链接文章。
非常感谢,但选择最近目标时,目前我是遍历比较的,有没有其他方法
非常感谢!目前我正在尝试
如果你的敌人子弹有使用四叉树 让你的子弹检测当前区域的敌人就行了
用速度加方向做的追踪导弹没有游戏性,只要导弹比你飞的快,就是必中。
是的,所以我在问怎么追踪
最简单的 移动方向向量每帧重新计算 目标向量减去当前子弹坐标向量就行
1.选目标,你可以发射的时候选(选完这个子弹就固定目标),也可以子弹飞行过程中选。关于最近的目标,你可以遍历,高级点的用格子或者四叉树动态分割。总之先找到目标。
2.飞行逼近,先算个朝向目标的速度,然后低通滤波一下。
vec2 newSpeedVec = (targetPos - srcPos).normalize() * speed; // 朝向目标的速度
currentSpeedVec = currentSpeedVec * 0.8 + newSpeedVec * 0.2 // 0.8的低通滤波,慢慢改变方向。
3.(根据需求)过一段时间子弹取消追踪,按原有方向飞行,不然对方没法躲。
导弹分为锁定、追踪、结束3个状态
初始状态锁定,记录目标所在坐标,切换到追踪
向记录的坐标发起追踪,碰到该坐标后切换到锁定状态
重新锁定目标所在坐标,发起新一轮追踪,到达坐标又切换到锁定
如此反复指定次数,切换到结束状态,放弃追踪直线飞行
当然,导弹要始终朝向目标,还要带有加速和减速才完美
感谢,已解决
导弹是必中的么, 还是目标跑了 就打不中?
PID 控制