Exemplo n.º 1
0
        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);
        }