123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263 |
- import { _decorator, director, find, renderer, Sprite, Vec3 } from 'cc';
- import { GameEvent, GameMgr } from '../../module_basic/scripts/GameMgr';
- import { IGamePlayer } from '../../module_basic/shared/protocols/public/game/GameTypeDef';
- import { ExtraNode, NodeUtils } from '../../module_basic/scripts/NodeUtils';
- const { ccclass, property } = _decorator;
- const tempV3 = new Vec3();
- @ccclass('PlayerMovement2D')
- export class PlayerMovement2D extends tgx.CharacterMovement2D {
- private _tmpSpeedFactor = 1.0;
- private _speedUpEndTime = 0;
- start(): void {
- super.start();
- //if player dies, stop movement
- //如果玩家死亡,则停止移动
- director.on(GameEvent.PLAYER_DIE, this.onPlayerDie,this);
- }
- onDestroy(): void {
- director.off(GameEvent.PLAYER_DIE, this.onPlayerDie,this);
- }
- onPlayerDie(player:IGamePlayer){
- if(player.playerId == GameMgr.inst.selfPlayer.playerId){
- this.onMovementStop();
- }
- }
- public tempSpeedUp(factor:number,time:number){
- this._tmpSpeedFactor = factor;
- this._speedUpEndTime = Date.now() + time;
- }
- onMovement(degree, strengthen){
- if(GameMgr.inst.selfPlayer.reviveTime > 0 || GameMgr.inst.gameData.gameState != 'playing'){
- return;
- }
- super.onMovement(degree,1.0);
- }
- onMovementStop(): void {
-
- }
- getRealSpeed(){
- return super.getRealSpeed() * this._tmpSpeedFactor;
- }
- update(deltaTime: number): void {
- super.update(deltaTime);
- if(this.getRealSpeed() > 0 && GameMgr.inst.gameData){
- NodeUtils.clampInMapBoundary(this.node as ExtraNode);
- }
- if(this._speedUpEndTime > 0 && Date.now() >= this._speedUpEndTime){
- this._tmpSpeedFactor = 1.0;
- this._speedUpEndTime = 0;
- }
- }
- }
|