💡返回主题
编写代码
接下来,我们制作敌人的血量机制:
- 用变量记录敌人的血量,初始时血量为 3。
- 当玩家子弹击中敌人,敌人将血量 -1。
- 当敌人血量 ≤0,敌人死亡。
1. 首先,我们为 “普通喵” 新建私有变量 “血量”:
顾名思义,私有变量就是独属于某个角色的变量。
在创建变量时,选择“仅适用于当前角色”,创建的就是私有变量(如我们刚刚创建的普通喵的“血量”);选择“适用于所有角色”,创建的就是普通的全局变量(例如在前面教程中创建的“主角血量”)。
私有变量的特点是,只属于某个角色,对其他角色不可见。只有拥有者能修改和读取自己的私有变量。
全局变量则与之相反,可以被所有角色看到和修改。
2.接着,为普通喵克隆体新增如下代码:
- 初始时,将自己血量设为 3;
- 当血量归 0,判定为死亡,停止其他动作(包括追逐玩家,播放攻击动画),将造型设为死亡,播放死亡音效,等待 1 秒后,删除自己。
回答:实际上,私有变量还有一个重要的特点——如果为某个角色创建了私有变量,则除了这个角色本身,该角色的每个克隆体也会复制一个独属于自己的私有变量。
比如,为普通喵创建了私有变量“血量”,则普通喵产生的每个克隆体也会拥有属于自己的“血量”变量。这些克隆体之间的“血量”相互独立,互不影响,每个克隆体只能修改和读取自己的“血量”。
• 普通喵克隆体删除前,可以加一个渐渐消失的动作:
效果:
3.在“子弹”角色中,添加击中猫咪的判定:
• 回到普通喵角色,添加接收到“击中敌人”的扣血代码:
这样,当子弹碰到普通喵,广播“击中敌人”,如果此时普通喵也碰到了子弹,就将自己的血量减少 1。
回答:有,因为可能同时存在多个敌人,当子弹碰到了敌人 A,广播“击中敌人”;除了敌人 A,其他敌人接收到“击中敌人”广播后,如果不判断是否碰到子弹,也会跟着一起扣血。因此扣血前需要先判断碰到子弹。
• 可以给普通喵添加一个被击中后的变暗效果:
接下来,试试运行效果:
哦不!看起来好像有一些 bug,敌人被击中后没有反应。 让我们分析一下相关代码,一起来看视频吧~
因此,增加“等待 0 秒”的代码后,问题解决。
运行效果:敌人被击中 3 次后,血量清 0,死亡并消失。
最后,在“普通喵”中,增加一个每隔两秒自动放置敌人的代码:
完美,大功告成!
<iframe
width="100%"
height="800px"
scrolling="no"
src="https://www.ccw.site/embed?id=STG101/Arkos/Lec3/04&type=comment"
title="{射击3-敌人的血量机制}"
frameBorder="0"
allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share"
allowFullScreen
scrolling="0"
></iframe>
本页索引