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); } }
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); } }
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); }