PotObj.ts
1.97 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
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
}