随机位置生成敌人:
接下来,我们来实现在随机位置生成敌人:
- 由于敌人不止一个,我们将敌人改为使用克隆体:将之前的敌人代码放在“作为克隆体启动”下,然后当点击绿旗时,产生敌人克隆体。
- 然后,让敌人产生时,移到地图上的随机位置,这样就实现了在地图随机位置生成敌人的效果。
- 但是有时候,敌人可能会生成在障碍物中卡住。
因此,我们也可以指定几个固定的无障碍位置来生成敌人。可以新建一个自制积木“在x..y..放置敌人”。
- 由于“位置x”、“位置y”是私有变量,私有变量的一个特性是可以继承,因此在克隆前设置变量,克隆后变量的值就可以传给敌人;
- 通过空格显示鼠标坐标(之前写的鼠标坐标空格显示代码),然后将鼠标移到地图上的位置,来获取该点坐标,从而让敌人在该点生成。
- 或者,我们可以在随机位置生成敌人前,判断一下生成点有没有障碍,如果有障碍就再随机选点,直到没有障碍为止。
- 首先,新建“随机选点”自制积木,用于选择一个没障碍的坐标。为了让这个积木瞬间执行完,我们可以勾选“运行时不刷新屏幕”(可以让循环类积木瞬间执行完毕)。
- 然后,在随机选择位置时,判断是否有障碍,若有就再次随机选点:
- 其中私有变量“out1*结果”,用于存放障碍检测结果,1 为有障碍,0 为无障碍。
- 检测障碍前记得显示角色(角色隐藏后无法检测碰撞)。由于此处检测障碍的是角色本体,检测完之后还要记得将角色本体隐藏。
b. 将代码做如下修改。如果生成位置填的是随机,就随机选择生成位置。
(注:作者命名习惯:“out1”表示这个变量是 1 号积木的运行结果【在积木前加 1 表示这是 1 号积木】)
这样,敌人在随机位置生成时,就不会出现卡在障碍里的情况。
6. 我们可以把在屏幕内的坐标判断为有障碍,这样敌人就不会在玩家视野内生成,避免贴脸。
(其中,320 是舞台半宽【如果是原版则是 240】,“320/摄像头缩放系数”得到对应地图上的实际距离)
完成!
<iframe
width="100%"
height="800px"
scrolling="no"
src="https://www.ccw.site/embed?id=STG202/Arkos/Lec4/02&type=comment"
title="{射击4-在随机位置生成敌人}"
frameBorder="0"
allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share"
allowFullScreen
scrolling="0"
></iframe>
本页索引