Esempio n. 1
0
    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);
    }
Esempio n. 2
0
    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);
        }
    }