下面,我们来编写敌人远程武器代码。
- 来到“敌人武器”角色:
- 首先新建以下私有变量,记录敌人武器属性:
- 武器类型(分为近战、远程两类);
- 武器伤害;
- 武器攻击间隔(比如手枪0.1秒射击一次,步枪0.03秒射击一次);
- 武器攻击音效。
- 新建自制积木“武器读取定义信息”,编写下面代码,读取不同武器的属性(G18、AK-47 的稍后补充)。
- 当武器为近战武器,执行近战动作;否则执行远程动作。近战武器为左右翻转,而远程武器由于要指向玩家,需要任意翻转。
近战武器代码:
- 编写近战武器代码(以之前刀的代码为基础进行修改):
- 没有攻击指令时,面向敌人的方向;
- 当敌人发出攻击指令,武器播放攻击音效,播放 5 帧攻击动画(刀是 5 帧,如果其他武器帧数不同,可再增加一个私有变量,用于来记录攻击动画帧数);如果玩家在攻击范围内,则伤害玩家。攻击完毕后将攻击指令重新设为 0。
- 接着,添加 G18、AK-47 的定义:
- 新建私有变量“武器攻击次数”,记录敌人武器每次连续开火次数,这里 G18(手枪)每次连续射击 3 次,AK-47(步枪)每次连续射击 5 次。
远程武器代码:
- 然后,添加远程武器的动作代码:
- 新建私有变量“武器造型”,记录武器造型(由于枪械朝左时,需要切换到上下翻转的造型,因此需要记录武器造型,朝左时切换到翻转造型)
- 当没有攻击指令,武器指向敌人的移动方向。造型设为武器名称。
- 当攻击指令为 1,武器面向玩家,发射若干次子弹(例如上面定义了 AK-47 会连发 5 次子弹),播放开火动画。攻击结束后将攻击指令重新设为 0。
(注:武器发射子弹的代码将在下一节介绍,这里先建立一个空的自制积木。)
- 添加如下代码,如果是远程武器,会根据朝向切换造型(当朝向左边时,切换到上下翻转的造型)
- 这样,我们就基本完成了远程武器的动作。可以放置手枪、步枪敌人测试一下:
看起来效果还不错,唯一的问题是,手枪敌人的武器位置不太对:
有两种调整方法:
- 一种是直接在造型中,将手枪的每一帧的位置都往右移动一段距离,使造型锚点(红圈部分)落在手枪左边。
但是考虑到有 6 个造型,而且要所有造型前移距离一样长,调整起来会比较麻烦。
- 还有一个更好的办法,在代码中让武器前移一段距离:
- 首先,新建私有变量“武器前伸”(武器前移的距离)。将 G18 武器前伸设为 20,其他武器则默认没有前伸。
- 接着,让武器在移到敌人后,朝自己的方向前移“武器前伸”的距离。前面设置了 G18 武器前伸为20,这样 G18 手枪就会朝前移动 20 距离。(移动 xx 步的代码可以从敌人中拖过来)
效果:手枪前移了一段距离,移到了正确的位置。
<iframe
width="100%"
height="800px"
scrolling="no"
src="https://www.ccw.site/embed?id=STG202/Arkos/Lec5/02&type=comment"
title="{射击5-远程敌人}"
frameBorder="0"
allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share"
allowFullScreen
scrolling="0"
></iframe>