Esempio n. 1
0
    public void Attack(ANavAgent pTarget)
    {
        if (m_bBuilding)
        {
            return;
        }
        bool  bFound;
        float fStopDist = m_fAttackRange + m_fRadius + pTarget.m_fRadius;
        //TODO Get Shoot Pos

        /*
         * Vector2 vPos = m_pOwner.GetShootPos(pTarget.m_vLastPos, m_fRadius, fStopDist,
         *                                  (fStopDist - pTarget.m_fRadius) * 0.5f + pTarget.m_fRadius,
         *                                  m_iAvoidenceLayer.value, out bFound);
         */
        //MoveTo(vPos, true, fStopDist, pTarget);
    }
Esempio n. 2
0
    private Stack <Vector2> GetAPath(Vector2 vTarget, ANavAgent pTarget, out EPathRes result)
    {
        result = EPathRes.EPR_Done;
        return(null);

        /*
         * if (m_pUnit is APawn)
         * {
         *  if (!(m_pUnit as APawn).IsGroundPawn())
         *  {
         *      //这货是飞的
         *      result = EPathFindingConst.PathFound;
         *      bStraight = true;
         *      return new[] { m_vLastPos, vTarget };
         *  }
         * }
         *
         * if (!m_pOwner.EdgeCheckWithAgent(m_vLastPos, vTarget, this, pTarget))
         * {
         *  result = EPathFindingConst.PathFound;
         *  bStraight = true;
         *
         *  return new[] { m_vLastPos, vTarget };
         * }
         *
         * bStraight = false;
         * if (null != StaticInfo.m_pBattle
         * && null != StaticInfo.m_pBattle.m_pGrid
         * && null != StaticInfo.m_pBattle.m_pGrid.m_pNav
         * && m_pOwner == StaticInfo.m_pBattle.m_pGrid.m_pNav
         * && StaticInfo.m_pBattle.m_bBattleStarted
         *  //&& false
         *  )
         * {
         *  Vector2[] ret = StaticInfo.m_pBattle.m_pGrid.AStarFindPathFromToV(m_vLastPos, vTarget, out result);
         *  if (null == ret || ret.Length < 2)
         *  {
         *      ret = new[] { m_vLastPos, (vTarget - m_vLastPos) * 0.1f + m_vLastPos };
         *  }
         *  return ret;
         * }
         *
         * return m_pOwner.PortalFindPathWithAgent(this, pTarget, m_vLastPos, vTarget, out result);
         */
    }
Esempio n. 3
0
    public void MoveTo(Vector2 vPos, bool bAttack = false, float fStopDist = 0.01f, ANavAgent pTarget = null)
    {
        EPathRes result = EPathRes.EPR_NoPath;

        if (m_bBuilding)
        {
            return;
        }

        if (null != m_pOwner)
        {
            Stack <Vector2> path = GetAPath(vPos, pTarget, out result);

            if (EPathRes.EPR_NoPath == result)
            {
                m_Task.m_eProgress     = EPathProgress.EPP_GiveUp;
                m_Task.m_vPathFound    = null;
                m_Task.m_vTargetPoint  = vPos;
                m_Task.m_bAttack       = bAttack; //for attack, change to hold
                m_Task.m_fBlockTime    = 0.0f;
                m_Task.m_fNotMoveTime  = 0.0f;
                m_Task.m_fStopDistance = fStopDist; //for range attack
                m_Task.m_pTarget       = pTarget;
                m_Task.m_fWalkTime     = 0.0f;
                m_Task.m_pOwner        = this;
            }
            else
            {
                m_Task.m_eProgress     = EPathProgress.EPP_Walking;
                m_Task.m_vPathFound    = path;
                m_Task.m_vTargetPoint  = vPos;
                m_Task.m_bAttack       = bAttack;
                m_Task.m_fBlockTime    = 0.0f;
                m_Task.m_fNotMoveTime  = 0.0f;
                m_Task.m_fStopDistance = fStopDist;
                m_Task.m_pTarget       = pTarget;
                m_Task.m_fWalkTime     = 0.0f;
                m_Task.m_pOwner        = this;
            }
        }

        return;
    }