示例#1
0
    /// <summary>
    /// Returns true if the from's units can reach the to tower
    /// </summary>
    public static bool DistanceCheck(TowerBehavior from, TowerBehavior to)
    {
        float   timeAlive = Game.TowerInfo.DefaultUnitKillTime;
        Vector3 destinationFinalPos;

        if (to.GetComponent <OrbitMotion>() != null)
        {
            destinationFinalPos = to.Orbit.CalculatePositionWithMoreUpTime(timeAlive);
        }

        else
        {
            destinationFinalPos = to.transform.position;
        }

        float distance = (to.transform.position - from.transform.position).magnitude;

        float maxDistanceTravel = timeAlive * FactionController.GetSpeedForFaction(from.Faction);

        if (maxDistanceTravel < distance)
        {
            return(false);
        }

        return(true);
    }