Exemplo n.º 1
0
    // Update is called once per frame
    void Update()
    {
        //Red cross positioning
        if (aiming)
        {
            if (targets.Count > 0)
            {
                for (int i = 0; i < targets.Count; i++)
                {
                    crossList[i].position = Camera.main.WorldToScreenPoint(targets[i].position);
                }
            }
        }

        //Dead Eye Animation Block
        if (deadeye)
        {
            return;
        }

        anim.SetFloat("speed", input.Speed);

        if (!aiming)
        {
            WeaponPosition();
        }

        if (Input.GetKeyDown(KeyCode.R))
        {
            SceneManager.LoadSceneAsync(SceneManager.GetActiveScene().name);
        }

        if (Input.GetMouseButtonDown(1) && !deadeye)
        {
            Aim(true);
        }

        if (Input.GetMouseButtonUp(1) && aiming)
        {
            if (targets.Count > 0)
            {
                DeadEye(true);

                Sequence s = DOTween.Sequence();
                for (int i = 0; i < targets.Count; i++)
                {
                    s.Append(transform.DOLookAt(targets[i].GetComponentInParent <EnemyScript>().transform.position, .05f).SetUpdate(true));
                    s.AppendCallback(() => anim.SetTrigger("fire"));
                    int x = i;
                    s.AppendInterval(.05f);
                    s.AppendCallback(() => FirePolish());
                    s.AppendCallback(() => targets[x].GetComponentInParent <EnemyScript>().Ragdoll(true, targets[x]));
                    s.AppendCallback(() => crossList[x].GetComponent <Image>().color = Color.clear);
                    s.AppendInterval(.35f);
                }
                s.AppendCallback(() => Aim(false));
                s.AppendCallback(() => DeadEye(false));
            }
            else
            {
                Aim(false);
            }
        }

        if (aiming)
        {
            input.LookAt(Camera.main.transform.forward + (Camera.main.transform.right * .1f));

            RaycastHit hit;
            Physics.Raycast(Camera.main.transform.position, Camera.main.transform.forward, out hit);

            if (!deadeye)
            {
                reticle.color = Color.white;
            }

            if (hit.transform == null)
            {
                return;
            }

            if (!hit.collider.CompareTag("Enemy"))
            {
                return;
            }

            reticle.color = Color.red;

            if (!targets.Contains(hit.transform) && !hit.transform.GetComponentInParent <EnemyScript>().aimed)
            {
                hit.transform.GetComponentInParent <EnemyScript>().aimed = true;
                targets.Add(hit.transform);

                Vector3    convertedPos = Camera.main.WorldToScreenPoint(hit.transform.position);
                GameObject cross        = Instantiate(aimPrefab, canvas);
                cross.transform.position = convertedPos;
                crossList.Add(cross.transform);
            }
        }
    }