private void FindClosesetTarget() { float distanceToClosestTarget = Mathf.Infinity; GameObject closestTarget = null; Target[] allTargets = GameObject.FindObjectsOfType <Target>(); if (allTargets.Length < 1) { CarTarget car = GameObject.FindObjectOfType <CarTarget>(); if (car == null) { return; } closestTarget = car.gameObject; } else { foreach (Target curTarget in allTargets) { float dist = (curTarget.transform.position - this.transform.position).sqrMagnitude; if (dist < distanceToClosestTarget) { distanceToClosestTarget = dist; closestTarget = curTarget.gameObject; } } } Vector3 targetPosition = closestTarget.transform.position; targetPosition.y = transform.position.y; transform.LookAt(targetPosition); }
void Shoot() { flash.Play(); RaycastHit hit; if (Physics.Raycast(car.transform.position, car.transform.forward, out hit, range)) { CarTarget target = hit.transform.GetComponent <CarTarget>(); if (target != null) { target.TakeDamage(damage); } if (hit.rigidbody != null) { hit.rigidbody.AddForce(-hit.normal * impactForce); } GameObject impactGO = Instantiate(impactEffect, hit.point, Quaternion.LookRotation(hit.normal)); Destroy(impactGO, 2f); } }