飞机大战知识点总结
上一节03已经实现了单发逻辑,在上节基础上,实现双发功能,实现的效果图如下
1.制作双发的子弹预制体,复制粘贴Prefabs
文件内的Bullet1
,修改为Bullet2
2.定义双发子弹的世界坐标位置。参考上一节的需要注意:在文件Player
内创建空节点,名称修改为bulletPost1
,用来定位子弹发射的位置。
相同方式,创建空节点bulletPost2
和bulletPost3
,并手动拖动到指定位置。
继续实现Player.ts
的双发逻辑,完整代码如下:
import {
_decorator, Component, EventTouch, Input, input, instantiate, Node, Prefab, Vec3 } from 'cc';
const {
ccclass, property } = _decorator;
@ccclass('Player')
export class Player extends Component {
// 子弹发射类型,1单发,2双发,0不发射
sendType:number = 2;
/**
* 单发,发射逻辑,先定义以下字段
* sendRate:number 子弹发射频率
* sendTime:number 子弹发射时间
* bulletParent:Node 用来存放所有生成的子弹
* bulletPost1:Node 第一种子弹的世界坐标位置
* bulletPrefab1:Prefab 第一种子弹的预制体
*
* 逻辑分析:
* 判断发射时间,sendTime+=dt >= sendRate 就需要发射子弹了,将sendTime重置为0
* 通过instantiate(bulletPrefab1)拿掉子弹1的预制体,赋值给bullet1
* 生成的所有子弹都要放在文件bulletParent内,所有通过addChild()方法,将bullet1 添加进去
* 最后设置bullet1的世界坐标位置为:bulletPost1的worldPosition
*/
@property
sendRate:number = 0.5;
sendTime:number = 0;
@property(Node)
bulletParent:Node = null;
@property