import { tMgr } from "../../../Global"; import { GamePlayTable, TableName } from "../../table/TableDefine"; import { ObjType } from "../BattleConst"; import { IUpdate } from "../inter/IUpdate"; import { MapData } from "./MapData"; import { ObjData } from "./ObjData"; export class PotObj extends ObjData implements IUpdate { private _angle: number = 0; get angle(): number { return this._angle; } private _angleSpeed: number = 0; private _speedVec: cc.Vec2 = new cc.Vec2(); //#region interface onUpdate(dt: number) { // throw new Error("Method not implemented."); this._angle += (this._angleSpeed * dt); this._angle = this._angle % 360; this._speedVec.x = 0; this._speedVec.y = this.map.battle.getPhysiceBallSpeed(); this._speedVec.rotateSelf(slib.MathUtil.getRadianByDegree(this._angle)); } //#endregion //#region event onCollisonToBall(collider: cc.Collider): void { super.onCollisonToBall(collider); // collider.node.setPosition(this.pixelPos); //碰撞过程中无法修改位置 collider.node.getComponent(cc.RigidBody).linearVelocity = this._speedVec } //#endregion //#region life cycle init(map: MapData, type: ObjType, gridX: number, gridY: number): void { super.init(map, type, gridX, gridY); this._angleSpeed = (tMgr.getConfig(TableName.GAME_PLAY, 11) as GamePlayTable).Value; this.canSlide = false; } onBattleStart(): void { super.onBattleStart(); this.map.battle && this.map.battle.regUpdateObj(this); //预览模式下, map.battle为空 } onDead(): void { super.onDead(); this.map.battle && this.map.battle.unregUpdateObj(this); } clone(): PotObj { return this.cloneValue(new PotObj()); } protected cloneValue(target: PotObj): PotObj { super.cloneValue(target); target._angleSpeed = this._angleSpeed; return target; } //#endregion }