CocosCreator入门学习《FlappyBird》(八):模块引用

TypeScript模块化相关介绍:https://www.tslang.cn/docs/handbook/modules.html

上一节,我们已经能在控制台输出知道游戏结束,本节继续完善结束后的逻辑。

首先,先在场景中添加一个Sprite节点,这个节点来显示gameOver的图片。

修改MainControl.ts脚本文件

1:修改类名为MainControl。

2:声明一个精灵spGameOver,注意这次没有用@property(cc.Sprite),这样写主要是为了用另外一种方式访问组件。

3:初始化精灵spGameOver,先获取名字为GameOver的节点,然后再通过getComponent接口获取cc.Sprite组件,其实这里只用获取节点就可以了,因为active属性是节点的。active赋值为false就是隐藏该节点。

在结束的时候,把spGameOver精灵显示出来就OK。

但是碰撞响应是在BirdControl模块中触发,怎么能让MainControl模块知道呢?

这就涉及到本节重点:模块化的概念,以及如何引用模块。

在MainControl脚本中添加gameOver函数,函数中的代码就是把spGameOver显示出来。

在BirdControl脚本中添加如上红框框中的内容。

第一块代码:把MainControl模块导入到当前模块。

第二块代码:声明一个MainControl类型的变量(只有写了第一块代码,这里MainControl类型才能被识别)。

第三块代码:获取MainControl脚本组件的引用。

第四块代码:在发生碰撞的时候,利用mainControl脚本引用对象调用gameOver函数,让MainControl模块接收到游戏结束的消息。

保存两个脚本的代码,然后回到CocosCreator运行。

当小鸟和柱子发生碰撞的时候,GameOver的图片显示出来了,但是却被柱子挡住了。

分析:由于柱子是游戏启动之后,动态生成之后加到Canvas节点上的,柱子比GameOver精灵靠后渲染,所以柱子会把GameOver精灵挡住。

创建一个Pipe空节点,并且把Pipe拖拽到GameOver的上面。然后在MainControl脚本修改如上代码,先获取名字为Pipe的节点,把实例化的管子全部加到Pipe节点上去,这样管子就会被GameOver覆盖住。

保存运行,看效果

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值