稍微尝试了一下用gm还原斑鸠的力之解放
maopaop 发表于 2019-01-03 12:57:55 504

昨天晚上一时脑抽,玩了一下斑鸠,很好奇那种力之解放是怎么做出来的,毕竟大触可以利用力之解放帮助自己打分,而我等苦手一放就断连233

力之解放有这样几个特点:

1、生效时间不定。与genetos式和ccwi式激光不同,斑鸠的力之解放近放可以当尾喷,远放可以从上屏打到下屏

2、类似于“跟踪导弹”,即——存在“转向力”,当目标的差角过大时只会转动固定量的角度,而斑鸠的力之解放很明显转向力是不断增大的

3、与东方系列灵梦的诱导不同,不是一个一个地去寻找目标,而是在放出的一瞬间,就按目标所剩hp锁定好了目标。

个人的实现思路: 首先,我猜测跟踪效果是由类似引力的东西实现出来的,所以我做了一个有初速度,依靠敌人位置做质心的“引力弹”,但是做出来后发现并不太对,因为绕着星球转动的天体就是这样的,它们之间并不会撞到一起去。

所以才有了“跟踪导弹”的设想。“跟踪导弹”怎么实现?先算出由子弹指向物体的这个向量的角度,再将其与子弹的direction进行比较,根据两者差值决定子弹是“向着敌人飞”还是“仅仅转动固定的角度”。

"跟踪导弹"满足了1、2两点,而第3点是难度最高的一部分,要在放出的一瞬间就按照敌人所剩hp来锁定所有目标,这就需要系统时刻掌握每个敌人的hp和敌人与自机距离的信息。

实现方式上,用了两个全局变量:一个映射enemymap,用来存放每个敌人能够挨几发;一个优先队列enemynear,用来存放每个敌人与自己的距离,距离越近优先级越小。

按下按键的一瞬间,自机会将这两个全局变量拷贝到自己这里,然后按照enemynear从小到大的顺序,将锁定目标的id设置成enemynear最小的那个值,保存到数组里,同时在enemymap对应的id键值-1。如果键值为1,那么将enemynear最小优先级的id弹出,继续下一个;如果enemynear只有一个值,那就把数组接下来的所有值设为这个id。

啊,想要做个简单直白的教程不容易呀,感觉自己都可能看不懂……我把工程放这里了,按A是引力激光,S是跟踪导弹,D就是~力之解放~!自己琢磨琢磨吧……

https://pan.baidu.com/s/1j-5-J3A4z1g8NhA_VYZw

最新回复 (1)
  • yunzl 发表于 2019-01-24 03:43:47
    0 2