123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869 |
- import { instantiate, Node, tween, v3, Vec3, _decorator } from 'cc';
- import { BaseLayer } from '../../common/BaseLayer';
- import { cocosUtil } from '../../utils/cocosUtil';
- import { constants } from '../data/constants';
- import { audioManager } from '../manager/audioManager';
- import { playerModel } from '../model/playerModel';
- const { ccclass, property } = _decorator;
- @ccclass('CoinGetEffectLayer')
- export class CoinGetEffectLayer extends BaseLayer {
- coinLayer: Node;
- coinNode: Node;
- posStart: Vec3;
- onLoad() {
- super.onLoad();
- this.coinLayer = this.getNodeByPath("coinLayer");
- this.coinNode = this.getNodeByPath("coinLayer/coin");
- this.posStart = this.obj.posStart;
- this.initUI();
- }
- initUI() {
- let pos = cocosUtil.convertToNodeSpace(this.coinNode, this.posStart);
- let posEnd = cocosUtil.convertToNodeSpace(this.coinNode, playerModel.instance.coinPosEnd);
- let num = 10 + Math.floor(Math.random() * 10);
- let count = 0;
- for (let i = 0; i < num; i++) {
- let coinNode = this.coinNode;
- if (i >= 1) {
- coinNode = instantiate(this.coinNode);
- coinNode.parent = this.coinLayer;
- }
- let posX = pos.x + Math.random() * 200 - 100;
- let posY = pos.y + Math.random() * 200 - 100;
- coinNode.setPosition(posX, posY);
- coinNode.setScale(0, 0, 1);
- let time = 0.5 + Math.random() * 0.5;
- tween(coinNode).to(0.2, {
- scale: v3(2, 2, 1)
- }).to(0.3, {
- scale: v3(1, 1, 1)
- }).to(time, {
- position: posEnd
- }, {
- easing: "cubicOut"
- }).call(() => {
- count++;
- coinNode.destroy();
- if (count >= num) {
- this.closeLayer();
- }
- }).start();
- }
- audioManager.instance.playEffect(constants.audioNames.gold);
- }
- }
|