public override bool OnFollowTarget(PlayerInstance player) { if (player.IsMoving) { return(false); } if (player.CanCastSpell()) { //到释放技能距离 player.ChangeState(ePlayerState.CastSpell); } else { if (!player.FollowTarget(player.mAttackTarget)) { player.ChangeState(ePlayerState.Idle); return(false); } } return(true); }
public override bool FollowTarget(PlayerInstance player, RoleActor target) { if (!base.FollowTarget(player, target)) { return(false); } player.SelectSpell(); if (player.CanCastSpell()) { //到释放技能距离 player.ChangeState(ePlayerState.WaitCoolDown); } else { Vector3 standPos = target.GetSurroundPosition(player.GetPosition(), (int)player.mCastSpellDistance, player.Id); if (!Util.PassableForMod(player.HostMap.Navigator, standPos)) { if (!Util.PassableForMod(player.HostMap.Navigator, player.GetPosition())) { return(false); } standPos = player.GetPosition(); } if (!player.MoveTo(standPos)) { return(false); } player.ChangeState(ePlayerState.FollowTarget); } return(true); }