Example #1
0
    public bool GetNearestObject(out Vehicle bestTarget, float maxDistance = Mathf.Infinity)
    {
        Vehicle.vehicleSide mySide = GetComponent <VehicleController>().vehicle.side;
        targetReached = false;
        bestTarget    = null;
        List <Vehicle> vehicles = new List <Vehicle>();

        vehicles = GameLogic.Instance.GetVehicles();
        if (vehicles.Count <= 1)
        {
            return(false);
        }
        float   closest  = Mathf.Infinity;
        Vector3 position = transform.position;

        foreach (var v in vehicles)
        {
            Vector3 vpos     = v.vehicleObject.transform.position;
            float   distance = Vector3.Distance(vpos, position);
            if (mySide != v.side && distance < maxDistance && distance < closest)
            {
                closest    = distance;
                bestTarget = v;
            }
        }
        if (bestTarget == null)
        {
            return(false);
        }
        else
        {
            return(true);
        }
    }
Example #2
0
    private bool checkTargetLOS()
    {
        if (target != null)
        {
            Vector3 direction = (target.position - transform.position);
            Ray     ray       = new Ray(transform.position, direction);
            //Debug.DrawRay(transform.position, direction, Color.green);
            RaycastHit hit;

            Vehicle.vehicleSide mySide = getVehicle().side;
            int layerMask;
            if (mySide == Vehicle.vehicleSide.Player)
            {
                layerMask = 1 << GameLogic.Instance.playerLayer;
            }
            else
            {
                layerMask = 1 << GameLogic.Instance.enemyLayer;
            }
            layerMask = ~layerMask;

            if (Physics.Raycast(ray, out hit, attackRange, layerMask))
            {
                if (hit.collider.transform.root.gameObject == target.gameObject)
                {
                    //Debug.Log("LOS to target");
                    return(true);
                }
                else
                {
                    //Debug.Log("hit something else: " + hit.collider.name + ", parent: " + hit.collider.transform.root.name + ", target: " + target.name);
                    return(false);
                }
            }
            else
            {
                return(false);
            }
        }
        else
        {
            return(false);
        }
    }
Example #3
0
    public Vehicle SummonVehicle(GameObject prefab, Vector3 position, Quaternion rotation, Vehicle.vehicleType type, Vehicle.vehicleSide side = Vehicle.vehicleSide.Player)
    {
        GameObject newVehicleObj = (GameObject)Instantiate(prefab, position, rotation);
        Vehicle    vehicle       = new Vehicle(newVehicleObj, type, side);

        newVehicleObj.GetComponent <VehicleController>().vehicle = vehicle;
        vehicles.Add(vehicle);
        Debug.Log("added " + vehicle.vehicleObject.name);
        return(vehicle);
    }