代码做网站的软件,iis 发布asp网站,网页设计的价格,wordpress app 打包子弹取消
今天我想做两件事#xff1a;一是子弹取消#xff0c;二是子弹封印。我想同时做这两件事#xff0c;因为我们已经有了一些基础设置#xff0c;可以让这些功能实现。
子弹取消是什么#xff1f;
对于某些敌人#xff0c;如果我们将它们击倒#xff0c;那…
子弹取消
今天我想做两件事一是子弹取消二是子弹封印。我想同时做这两件事因为我们已经有了一些基础设置可以让这些功能实现。
子弹取消是什么
对于某些敌人如果我们将它们击倒那么它们已经射出的所有子弹都会消失。我们已经做了一些设置来实现这一点。
实现过程
检查敌人属性每个敌人都有一个属性“kank”如果设置为1则表示该敌人会取消子弹。子弹与敌人的关联我们需要让每颗子弹记住是由哪个敌人发射的。这样在取消子弹时我们就能知道哪些子弹需要被取消。取消子弹当敌人被击倒时我们遍历所有子弹如果子弹的发射者是我们要取消的敌人那么就让这些子弹消失。视觉效果子弹消失时我们不希望它们只是简单地消失而是想加入一些视觉效果比如让子弹变成一个小爆炸或者冲击波。
实现细节
我们为子弹添加了一个属性来记录发射者。遍历子弹队列检查每颗子弹的发射者如果是要取消的敌人则将其从队列中移除。为子弹消失添加了冲击波效果使视觉效果更加生动。
主题二子弹封印
子弹封印比子弹取消稍微复杂一些。基本思路是当玩家靠近敌人时敌人将停止射击。
实现过程
设置阈值我们需要确定一个距离阈值当玩家与敌人的距离小于这个阈值时敌人将停止射击。检查距离在敌人射击前我们检查玩家与敌人的距离如果距离小于阈值则不发射子弹。视觉反馈为了让玩家知道敌人已经被封印我们在敌人身上显示一个“X”标记。
实现细节
我们为敌人添加了一个“sealed”属性用于标记敌人是否被封印。在敌人射击前我们计算玩家与敌人的距离并与阈值进行比较。如果敌人被封印我们在绘制敌人时在其身上显示一个红色的“X”标记。
其他内容
声音效果我为敌人被击中时添加了声音效果但发现多个声音效果会相互干扰因此我调整了声音的播放逻辑确保每帧只播放一个声音效果。技术讨论在最后部分我讨论了关于使用向量和角度来计算敌人移动方向的问题。虽然使用向量可以简化一些计算但在复古硬件上三角函数计算成本较高因此我选择了更经济的角度计算方法。