/* 文件名:goblin_state.nut 路径:User/ObjectActScript/MonsterObjectFunc/act1/goblin/goblin_state.nut 创建日期:2024-05-11 09:25 文件用途:哥布林的状态 */ ////////站立状态 function GoblinState_Start_Rest() { SetAnimation(0); //初始化自身速度 XSpeed = 0; YSpeed = 0; ZSpeed = 0; } function GoblinState_Proc_Rest(dt, StateTime) { //如果站立状态持续了三秒 // if (StateTime >= 1500) { // //构造移动信息包 // StateVar.MovePack <- {}; // //随机一个方向 // StateVar.MovePack.Direction <- MathClass.Rand(0, 1); // //随机一个上下的方向 // StateVar.MovePack.Portrait <- MathClass.Rand(2, 3); // SetState(BASE_STATE.MOVE); // } } function GoblinState_End_Rest() {} ////////站立状态 ////////移动状态 function GoblinState_Start_Move() { //设置左右的朝向 SetDirection(StateVar.MovePack.Direction); //设置移动Ani SetAnimation(1); //计算X轴移动速率 StateVar.MovePack.MoveXRate <- Attribute.MoveSpeed / 1000 * 0.5; StateVar.MovePack.MoveYRate <- Attribute.MoveSpeed / 1000 * 0.2 * 0.5; } function GoblinState_Proc_Move(dt, StateTime) { // local MoveXValue = StateVar.MovePack.MoveXRate * dt; // local MoveYValue = StateVar.MovePack.MoveYRate * dt; // if (StateVar.MovePack.Direction == DIRECTION.LEFT) MoveXValue = -MoveXValue; // if (StateVar.MovePack.Portrait == DIRECTION.UP) MoveYValue = -MoveYValue; // MoveBy(MoveXValue, MoveYValue, 0); // if (StateTime >= 1500) { // SetState(BASE_STATE.REST); // } } function GoblinState_End_Move() { delete StateVar.MovePack; } ////////移动状态 ////////受击状态 function GoblinState_Start_Damage() { //设置受击Ani SetAnimation(MathClass.Rand(3, 4)); //存储开始的速度 StateVar.StartXSpeed <- XSpeed; } function GoblinState_Proc_Damage(dt, StateTime) { // local MoveXValue = StateVar.MovePack.MoveXRate * dt; // local MoveYValue = StateVar.MovePack.MoveYRate * dt; // if (StateVar.MovePack.Direction == DIRECTION.LEFT) MoveXValue = -MoveXValue; // if (StateVar.MovePack.Portrait == DIRECTION.UP) MoveYValue = -MoveYValue; // MoveBy(MoveXValue, MoveYValue, 0); // if (StateTime >= 1500) { // SetState(BASE_STATE.REST); // } // Damager.SetXSpeedWithDirection(15); SetSpeed(0, MathClass.sq_GetAccel(StateVar.StartXSpeed, 0, StateTime, 200, true)); if (StateTime >= 200) { SetState(BASE_STATE.REST); } } function GoblinState_End_Damage() { } ////////受击状态