Ejemplo n.º 1
0
    //Tracks player inputs
    private void Update()
    {
        //Flashlight following mouse
        Vector3 mousePos = Input.mousePosition;

        mousePos.z = 0f;
        Vector3 objectPos = Camera.main.WorldToScreenPoint(transform.position);

        mousePos = mousePos - objectPos;
        Quaternion lookMouse = Quaternion.LookRotation(mousePos, Vector3.back);

        lookMouse.x = 0;
        lookMouse.y = 0;
        flashlight.transform.rotation = Quaternion.RotateTowards(transform.rotation, lookMouse, 360f);

        //Input for rolling
        if (Input.GetKeyDown("space") && (rollOneShot == null || !rollOneShot.Running))
        {
            rollOneShot = new Task(roll());
        }

        //Inputs for firing arrow
        if (Input.GetMouseButtonDown(1))
        {
            crosshair.SetActive(true);

            soundManager.Play("Pull_Bow_Back");
        }
        else if (Input.GetMouseButton(1))
        {
            //Push crosshair towards mouse
            mousePos   = Input.mousePosition;
            mousePos.z = 0f;
            objectPos  = Camera.main.WorldToScreenPoint(transform.position);
            mousePos   = mousePos - objectPos;


            if (mousePos.normalized != (crosshair.transform.position - transform.position).normalized)
            {
                crosshair.transform.position = mousePos.normalized * (crosshair.transform.position - transform.position).magnitude + transform.position;
            }
            if ((crosshair.transform.position - transform.position).magnitude < bowData.getRange())
            {
                crosshair.transform.Translate(mousePos.normalized * Time.deltaTime * bowData.getAimSpeed());
            }

            if (Input.GetMouseButtonDown(0))
            {
                float angleRestrictions = 40f;
                float currAngle         = angleRestrictions;
                float angleStepCount    = angleRestrictions * 2 / (bowData.getArrowShootCount() - 1);

                if (bowData.getArrowShootCount() == 1)
                {
                    gun.Fire(bullet, 0, bowData.getDmg());
                }
                else
                {
                    for (int i = 0; i < bowData.getArrowShootCount(); ++i)
                    {
                        gun.Fire(bullet, currAngle, bowData.getDmg());
                        currAngle -= angleStepCount;
                    }
                }

                soundManager.PlayOneShot("Shoot_Bow");

                soundManager.Play("Pull_Bow_Back");

                crosshair.transform.position = transform.position;
            }
        }
        else if (Input.GetMouseButtonUp(1))
        {
            crosshair.SetActive(false);
            crosshair.transform.position = transform.position;
            soundManager.Stop("Pull_Bow_Back");
        }

        //input for basic player movement
        playerMove();
    }