【Cocos Creator 3.8.3】基础篇:飞机大战系列(飞机移动)

最近抗洪,没抽出时间学习,见谅见谅,哈哈就是又偷懒了,北方今年确实雨水大了点,体验了一把南方的闷闷湿湿的感觉

效果图

在这里插入图片描述
飞机喷气和移动的效果分别应用了Cocos的事件系统和动画系统

飞机和动画剪辑

创建飞机

在Canvas下创建Sprite精灵,将飞机图片拖入精灵属性检查器Sprite Frame,设置要初始位置。
在这里插入图片描述

动画剪辑

创建飞机后,添加飞机尾气喷射,让飞机看起来是在真正的飞行。

  1. 创建动画剪辑脚本HeroPlaneAnim.anim,将动画剪辑挂载到飞机节点上
    HeroPlaneAnim
    在这里插入图片描述

  2. 准备两张图片
    在这里插入图片描述 在这里插入图片描述

  3. 打开动画编辑器
    动态效果是通过图片替换的方式来实现的,所有使用到了spiteFrame属性
    在这里插入图片描述
    通过添加关键帧,将不同的图片插入到关键帧,对采样帧率和播放速度进行调整,实现动画效果
    在这里插入图片描述
    根据运行效果调试完毕后,点击保存推出编辑界面

事件系统

事件系统分为输入事件节点事件屏幕事件系统等,飞机跟随鼠标或手指移动用到了输入事件,固定Web开发输入事件就是文本框相关事件,但是在Cocos Creator 输入事件是用来监听全局的系统输入事件,代替原有的systemEvent事件。

输入事件(Input)

输入事件包含:鼠标事件、触摸事件、键盘事件、设备重力传感事件,移动端开发所有事件选择是触摸事件。

飞机是如何跟随手指移动,通过手指开始触摸屏幕>获取飞机当前的位置>通过Cocos api 提供的 delta方法(获取触摸点距离上一次事件移动的距离对象)>飞机getDelta获取的差值来计算飞机飞行的距离

  //玩家飞机是Hero
  @property(Node)
  heroPlane: Node = null;

  start(){
   input.on(Input.EventType.TOUCH_MOVE, this._touchMove, this);
  }

  // 2D和3D在处理跟随手指移动的计算方式稍有不同
  _touchMove(event: EventTouch) {
    const _delta = event.getDelta();
    this.heroPlane.setPosition(
      this.heroPlane.position.x + _delta.x,
      this.heroPlane.position.y + _delta.y
    );
  }

完整代码(UIManager.ts):

import { _decorator, Component, EventTouch, Input, input, Node } from "cc";
const { ccclass, property } = _decorator;

@ccclass("UIManager")
export class UIManager extends Component {
  @property(Node)
  heroPlane: Node = null;

  start() {
    this._setInputEventActive(true);
  }

  // 激活监听或卸载监听
  _setInputEventActive(active: boolean) {
    if (active) {
      input.on(Input.EventType.TOUCH_MOVE, this._touchMove, this);
    } else {
      input.off(Input.EventType.TOUCH_MOVE, this._touchMove, this);
    }
  }

  _touchMove(event: EventTouch) {
    const _delta = event.getDelta();
    this.heroPlane.setPosition(
      this.heroPlane.position.x + _delta.x,
      this.heroPlane.position.y + _delta.y
    );
  }

  update(deltaTime: number) {}
}

UIManager 主要存放用户所有的与操作相关的方法,是全局节点组件
在这里插入图片描述
点击保存运行,飞机就动起来了…

长按识别关注,交个朋友吧!
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值