public void UpdateMoveAoe(ActionMovingAOE aoe) { if (!ticker.IsEnable()) { return; } ticker.Restart(); List <SceneEntity> entitys = SceneLogic.GetInstance().GetAllSceneObject(KHeroObjectType.hotMonster); float distance = float.MaxValue; SceneEntity aim = null; Vector3 selfPosition = Owner.Position; foreach (SceneEntity entity in entitys) { if (entity.property.isDeadTemp) { continue; } float dis = Vector3.Distance(entity.transform.position, selfPosition); if (dis < distance) { aim = entity; distance = dis; } } if (null == aim) { return; } float aimDis = Vector3.Distance(aim.Position, Owner.Position) - 2f; if (aimDis < 0) { return; } Vector3 fw = aim.Position - Owner.Position; fw.Normalize(); aim.Position = Owner.Position + (fw * aimDis); aoe.MoveToDistance(aim.Position, Owner.property.speed); }