接下来我们将添加多种敌人。不同的敌人代码写在同一个角色“敌人”里,通过私有变量区分,从而让不同敌人有不同的血量、速度、攻击方式等:
敌人代码:
- 首先,在“敌人”角色中:
- 新建私有变量“敌人名称”,用于记录克隆体的敌人名。
- 右键修改放置敌人的积木,增加一个敌人名称的参数,用于指定放置的敌人名称。
- 通过血量判断敌人的死亡,不是很方便,我们可以改用一个私有变量来记录敌人是否死亡:
a.新建私有变量“敌人死亡?”,然后添加如下代码,之后就可以方便用私有变量判断敌人是否死亡。
b.然后,将之前血量判断死亡的代码改为通过变量判断。(注:敌人攻击的时候如果死亡,也要退出等待)
c.可以把敌人攻击的代码做成自制积木,方便理解。
敌人攻击状态:
- 接着,代码做如下修改:
- 新建自制积木“敌人读取定义信息”,用于敌人读取自己的血量、速度等信息。
- 新建私有变量“敌人类型”,记录敌人是近战还是远程。
- 新建私有变量“敌人速度”,记录敌人移动速度。
- 新建两个自制积木:“近战动作”、“远程动作”。
- 判断敌人类型是“近战”,就执行近战动作,否则执行远程动作;
- “近战动作”中的代码是之前持刀敌人的动作。将移动速度填入速度变量;
- “远程动作”中的代码将之后补充。
- 为不同的敌人补充敌人属性代码:
(注: G18 是一种手枪的名字)
也可以将代码改成下面的形式(类似之前地图信息,看起来更清爽)
- 编写下面的自制积木,用于让敌人移动一段距离。当敌人死亡时退出脚本。
(注:“停止这个脚本”用于停止并退出当前自制积木。)
- 编写远程敌人动作:
- 如果敌人离玩家比较远(比如250),就先尝试接近玩家:
- 否则,朝玩家开火;
- 开火结束后,随机游走(面向随机方向移动一段距离,重复两次)
这样,我们就完成了 4 种不同的敌人,并编写了远程类、近战类敌人的动作。
现在,近战类敌人(持刀、持盾敌人)可以正常运行;远程类敌人由于还没编写枪械的代码,还无法正常运作,相关代码将在下一节编写。
<iframe
width="100%"
height="800px"
scrolling="no"
src="https://www.ccw.site/embed?id=STG202/Arkos/Lec5/01&type=comment"
title="{射击5-远程敌人}"
frameBorder="0"
allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share"
allowFullScreen
scrolling="0"
></iframe>