This commit is contained in:
DESKTOP-5RP3AKU\Jisol
2023-11-05 03:26:09 +08:00
parent ec4d6a15d7
commit 0014eff5e0
4034 changed files with 623229 additions and 41 deletions

View File

@@ -97,6 +97,9 @@ export default class GOnHookMode extends GBaseMode<{}>{
fsm:GFSMOnHookMode;
//是否允许攻击
isAllowAttack:boolean = false;
onSyncInitSuccess():void{
//初始化战斗
@@ -146,8 +149,13 @@ export default class GOnHookMode extends GBaseMode<{}>{
onUpdateCamera(dt:number){
//如果没有敌人相机永远锁定最前面的宠物
if(!this.isHaveEnemy()){
if(this.isAllowAttack && this.isHaveEnemy()){
//如果有敌人则移动到战斗位置
let cameraWorld = this.camera.node.worldPosition.clone();
this.camera.node.worldPosition = cameraWorld.lerp(v3(this.nextFightX,cameraWorld.y,cameraWorld.z),(dt / 1000));
}else{
//获取冲到最前面的宠物
let roles = this.getOnesRoleAlive(GOnHookModePlayerEnum.PLAYER);
let frontRole = roles.sort((role1,role2) => role2.v2World.x - role1.v2World.x)[0];
@@ -156,11 +164,6 @@ export default class GOnHookMode extends GBaseMode<{}>{
//设置相机 位置
let cameraWorld = this.camera.node.worldPosition.clone();
this.camera.node.worldPosition = cameraWorld.lerp(v3(frontRole.v2World.x,cameraWorld.y,cameraWorld.z),(dt / 1000));
}else{
//如果有敌人则移动到战斗位置
let cameraWorld = this.camera.node.worldPosition.clone();
this.camera.node.worldPosition = cameraWorld.lerp(v3(this.nextFightX,cameraWorld.y,cameraWorld.z),(dt / 1000));
}
}
@@ -210,6 +213,8 @@ export default class GOnHookMode extends GBaseMode<{}>{
//获取敌人
getEnumy(player:GRoleDefault,type:GOnHookModePlayerEnum):GRoleDefault{
if(!this.isAllowAttack) return null;
let enumyOnes = GOnHookModePlayerEnum.ENEMY
//如果是ENEMY 则 它的敌人是 PLAYER
if(type == GOnHookModePlayerEnum.ENEMY) enumyOnes = GOnHookModePlayerEnum.PLAYER
@@ -253,6 +258,7 @@ export default class GOnHookMode extends GBaseMode<{}>{
//是否有怪物
isHaveEnemy(){
if(!this.isAllowAttack) return [];
return this.getOnesRoleAlive(GOnHookModePlayerEnum.ENEMY).filter(role => !!role.get()).length > 0;
}

View File

@@ -32,18 +32,18 @@ export default class GFSMOnHookMode extends GFSMBase{
title:"生成下一个战斗位置",
mode:GFSMProcessMode.Execute,
execute: this.onGenNextFightProcess.bind(this),
to:[ProcessEnum.LeaveFight]
},
[ProcessEnum.LeaveFight]:{
title:"前往战斗",
mode:GFSMProcessMode.WaitExecute,
execute: this.onLeaveFightProcess.bind(this),
to:[ProcessEnum.GenEnemy]
},
[ProcessEnum.GenEnemy]:{
title:"生成敌人",
mode:GFSMProcessMode.Execute,
execute: this.onGenEnemyProcess.bind(this),
to:[ProcessEnum.LeaveFight]
},
[ProcessEnum.LeaveFight]:{
title:"前往战斗",
mode:GFSMProcessMode.WaitExecute,
execute: this.onLeaveFightProcess.bind(this),
to:[ProcessEnum.Fight]
},
[ProcessEnum.Fight]:{
@@ -69,11 +69,21 @@ export default class GFSMOnHookMode extends GFSMBase{
//生成下一个战斗位置
onGenNextFightProcess(){
this.mode.isAllowAttack = false;
this.mode.onNextTarget();
return ProcessEnum.LeaveFight; //前往战斗位置
return ProcessEnum.GenEnemy; //生成敌人
}
//生成敌人
onGenEnemyProcess(){
this.mode.onResetGenerateEnemy();
return ProcessEnum.LeaveFight; //前往战斗
}
//前往战斗
onLeaveFightProcess(){
@@ -90,22 +100,15 @@ export default class GFSMOnHookMode extends GFSMBase{
}
//到达位置生成敌人
return ProcessEnum.GenEnemy;
}
//生成敌人
onGenEnemyProcess(){
this.mode.onResetGenerateEnemy();
return ProcessEnum.Fight;
}
//战斗
onFightProcess(){
this.mode.isAllowAttack = true;
//等待敌人击杀完
if(!(this.mode.isHaveEnemy())){
return ProcessEnum.SeekEnemy; //击杀完寻找敌人