Exemple #1
0
    // Update is called once per frame
    void Update()
    {
        crosshair.ActivateCrosshair(false);
        closestEnemy           = null;
        allEnemies             = GameObject.FindObjectsOfType <Enemy>();
        distanceClosestToEnemy = Mathf.Infinity;
        Vector3 moveInput = new Vector3(SimpleInput.GetAxisRaw("Horizontal"), 0, SimpleInput.GetAxisRaw("Vertical"));

        Vector3 moveVelocity = moveInput.normalized * moveSpeed;

        playerController.Move(moveVelocity);
        Debug.Log(thumb.transform.position);
        Ray   ray         = viewCamera.ScreenPointToRay(Input.mousePosition);
        Plane groundPlane = new Plane(Vector3.up, Vector3.up * gunController.GunHeight);
        float rayDistance;

        if (groundPlane.Raycast(ray, out rayDistance))
        {
            Vector3 point = ray.GetPoint(rayDistance);
            Debug.DrawLine(ray.origin, point, Color.red);
            playerController.LookAt(point);
            if ((new Vector2(point.x, point.z) - new Vector2(transform.position.x, transform.position.z)).sqrMagnitude > 1)
            {
                gunController.Aim(point);
            }
        }

        foreach (Enemy currentEnemy in allEnemies)
        {
            float distanceToEnemy = (currentEnemy.transform.position - this.transform.position).sqrMagnitude;
            if (distanceToEnemy < distanceClosestToEnemy)
            {
                distanceClosestToEnemy = distanceToEnemy;
                closestEnemy           = currentEnemy;
                //Debug.Log(distanceClosestToEnemy);

                if (distanceClosestToEnemy < 25)
                {
                    crosshair.ActivateCrosshair(true);
                    crosshair.DetectTargets(ray);
                    playerController.LookAt(closestEnemy.transform.position);

                    crosshair.transform.position = closestEnemy.transform.position;
                    gunController.Shoot();
                }
            }
        }


        if (Input.GetKeyDown(KeyCode.Space))
        {
            gunController.Shoot();
        }
    }