您的位置是:少儿编程网>Scratch编程教程Scratch编程教程

Scratch小游戏(28):《保卫萝卜》(9)教程

少儿编程网2021-03-31 19:41:29Scratch编程教程 人已围观 来源:少儿编程 -用户投稿

简介本期分享的是: - 防御塔的升级以及售卖系统 - 防御塔的发射导航系统一、防御塔的升级以及售卖系统防御塔的升级以及售卖系统除了自身还有其他两个角色辅助:scope、upgrade。还是拿瓶子炮为例,当我们点击它时,会将当前位置记录在currentMouseX和currentMouseY中,也会将_name传递给全局变量turretName。scope角色辅助显示该防御塔的攻击范围upgrade角色显示升级所需金币数、售卖金币数以及升级过程效果。升级所需金币数从塔属性结构体内找到,其实就是两个等级所需金币数

版权所有:https://wWw.pxcodeS.com

本期分享的是:JlD少儿编程网-https://www.pxcodes.com

 - 防御塔的升级以及售卖系统JlD少儿编程网-https://www.pxcodes.com

 - 防御塔的发射导航系统JlD少儿编程网-https://www.pxcodes.com

 JlD少儿编程网-https://www.pxcodes.com

Scratch小游戏(28):《保卫萝卜》(9)教程JlD少儿编程网-https://www.pxcodes.com

 

一、防御塔的升级以及售卖系统
防御塔的升级以及售卖系统除了自身还有其他两个角色辅助:scope、upgrade。
还是拿瓶子炮为例,当我们点击它时,会将当前位置记录在currentMouseX和currentMouseY中,也会将_name传递给全局变量turretName。

 JlD少儿编程网-https://www.pxcodes.com

Scratch小游戏(28):《保卫萝卜》(9)教程JlD少儿编程网-https://www.pxcodes.com

scope角色辅助显示该防御塔的攻击范围

Scratch小游戏(28):《保卫萝卜》(9)教程JlD少儿编程网-https://www.pxcodes.com

upgrade角色显示升级所需金币数、售卖金币数以及升级过程效果。

Scratch小游戏(28):《保卫萝卜》(9)教程JlD少儿编程网-https://www.pxcodes.com

升级所需金币数从塔属性结构体内找到,其实就是两个等级所需金币数差,并与当前金币数比较以显示相应造型。

Scratch小游戏(28):《保卫萝卜》(9)教程JlD少儿编程网-https://www.pxcodes.com

如果符合升级条件(等级小于3与当前金币数大于升级所需金币数)就广播升级。

Scratch小游戏(28):《保卫萝卜》(9)教程JlD少儿编程网-https://www.pxcodes.com

upgrade角色售卖与升级系统类似,额外加了边缘显示判断,原理很简单,自己脑补。

Scratch小游戏(28):《保卫萝卜》(9)教程JlD少儿编程网-https://www.pxcodes.com

upgrade角色升级过程效果就是造型的逐个显示。

Scratch小游戏(28):《保卫萝卜》(9)教程JlD少儿编程网-https://www.pxcodes.com

**后是瓶子炮自己的升级代码,其实就是更新外观、攻击力、攻击范围、攻击频率等参数JlD少儿编程网-https://www.pxcodes.com

Scratch小游戏(28):《保卫萝卜》(9)教程JlD少儿编程网-https://www.pxcodes.com

 JlD少儿编程网-https://www.pxcodes.com


二、防御塔的发射导航系统
    在开火之前需要判断与怪物之间的距离,进入攻击范围才会触发瞄准、发射等事件。但这里有个问题:目前scratch只能处理于角色(本体)之间的相互关系,也就是说对于怪物克隆体像面向、移动到命令是不起作用的,它只能面向或移动到本体,但如果本体隐藏就毫无反应。怎么解决?为了精准处理与每一个怪物克隆体的交互,我是将每时每刻怪物的位置信息写入列表中,然后根据序号分别处理。

Scratch小游戏(28):《保卫萝卜》(9)教程JlD少儿编程网-https://www.pxcodes.com

这里有一个小细节需要注意:没有出现在屏幕上的怪物,其位置一定要特殊处理,防止炮塔误判,我这里做了无穷大处理。

Scratch小游戏(28):《保卫萝卜》(9)教程JlD少儿编程网-https://www.pxcodes.com

先获取与怪物的距离,这里用到数学上的一个知识点:两点间的距离公式。
 

Scratch小游戏(28):《保卫萝卜》(9)教程JlD少儿编程网-https://www.pxcodes.com

Scratch小游戏(28):《保卫萝卜》(9)教程JlD少儿编程网-https://www.pxcodes.com

如果某个怪物进入攻击范围,面向这个怪物,我们需要计算出面向怪物的角度α,知道了斜边_dis(两克隆体间距离)以及与怪物的坐标差,就可以用反三角函数求出α,这里的知识点大家自行解决。JlD少儿编程网-https://www.pxcodes.com

 JlD少儿编程网-https://www.pxcodes.com

Scratch小游戏(28):《保卫萝卜》(9)教程JlD少儿编程网-https://www.pxcodes.com

我这里用了反余弦函数(反正弦同理),arccosα的值域为[0,π],由于scratch的0°与直角坐标系的偏差,这里做了个角度偏移处理。JlD少儿编程网-https://www.pxcodes.com

 

Scratch小游戏(28):《保卫萝卜》(9)教程JlD少儿编程网-https://www.pxcodes.com

“万事俱备只欠东风”,接下来就是判断是否进入攻击范围,然后发射子弹了,我们下期继续。
 

Scratch小游戏(28):《保卫萝卜》(9)教程JlD少儿编程网-https://www.pxcodes.com
JlD少儿编程网-https://www.pxcodes.com
JlD少儿编程网-https://www.pxcodes.com
来源   嘻嘻哈哈学编程JlD少儿编程网-https://www.pxcodes.com

版权所有:https://wWw.pxcodeS.com

相关文章:

支持一下 ( )

Scratch小游戏(28):《保卫萝卜》(9)教程

      匿名评论
    • 评论
    人参与,条评论
    少儿编程网

微信公众号

免费视频教程

先知道