Ball.ts 3 KB
// Learn TypeScript:
//  - https://docs.cocos.com/creator/manual/en/scripting/typescript.html
// Learn Attribute:
//  - https://docs.cocos.com/creator/manual/en/scripting/reference/attributes.html
// Learn life-cycle callbacks:
//  - https://docs.cocos.com/creator/manual/en/scripting/life-cycle-callbacks.html

import { SaveDataManager } from "../component/SaveDataManager";
import { tMgr } from "../Global";
import { BattleManager } from "../kernel/battle/BattleManager";
import { BallSkinTable, GamePlayTable, TableName } from "../kernel/table/TableDefine";

const { ccclass, property } = cc._decorator;

@ccclass
export default class Ball extends cc.Component {

    /**是否正在飞向出生点 */
    collecting: boolean = false;

    scaleEnable: boolean = true;

    // static POS_CACHE: cc.Vec3 = cc.v3();

    // LIFE-CYCLE CALLBACKS:

    // onLoad () {}

    protected onEnable(): void {

        let skinId = SaveDataManager.ins.runtimeData.ballSkinCurrent;
        SaveDataManager.ins.runtimeData.ballSkinTry > 0 && (skinId = SaveDataManager.ins.runtimeData.ballSkinTry); //有试用皮肤,优先使用试用

        let config = tMgr.getConfig(TableName.BALL_SKIN, skinId) as BallSkinTable;

        let bindNode = this.node;

        cc.resources.load('battle/' + config.Img, cc.SpriteFrame, (error, asset) => {

            if (!error) {

                let img = bindNode.getChildByName('img');
                img.getComponent(cc.Sprite).spriteFrame = asset as cc.SpriteFrame;
                this.scaleEnable && (img.scale = (tMgr.getConfig(TableName.GAME_PLAY, 15 + config.Size) as GamePlayTable).Value / 100);

            }
        })

    }

    protected onDisable(): void {

    }

    start() {

    }

    protected onDestroy(): void {
        cc.Tween.stopAllByTarget(this.node);
    }

    // update (dt) {}

    onBeginContact(contact: cc.PhysicsContact, selfCollider: cc.Collider, otherCollider: cc.Collider) {

        if (otherCollider.node.name == "borderCollector") {

            // if (BattleManager.ins.curBattle.marblesCollectCount > 0) {
            //     this.collect(Ball.POS_CACHE);
            // }
            // else {
            //第一个球
            // contact.disabled = true;
            let points = contact.getWorldManifold().points;
            BattleManager.ins.curBattle.marblesCollected(points[0], this.node);

            // this.node.active = false;
            // Ball.POS_CACHE.x = BattleManager.ins.curBattle.marblesBornPosNextRound.x;
            // Ball.POS_CACHE.y = BattleManager.ins.curBattle.marblesBornPosNextRound.y;
            // Ball.POS_CACHE.z = 0;
            // }
        }
    }

    // collect(targetPos: cc.Vec3) {

    //     this.node.getComponent(cc.PhysicsCollider).enabled = false;

    //     cc.tween(this.node).to(0.2, { position: targetPos }).call(() => {

    //         this.node.active = false;
    //         this.node.getComponent(cc.PhysicsCollider).enabled = true;
    //         BattleManager.ins.curBattle.marblesCollected(null);

    //     }).start();
    // }
}