예제 #1
0
    private void Update()
    {
        Vector2 dir    = Vector2.right * playerPhy.facingSign;
        Vector2 aimDir = new Vector2(Input.GetAxis("Horizontal"), Input.GetAxis("Vertical"));

        angle = Vector2.SignedAngle(Vector2.right, dir);
        if (aimDir.magnitude > .1f)
        {
            angle = Vector2.SignedAngle(Vector2.right, aimDir);
            //angle = Mathf.Repeat(angle, 360);
            angle = (int)(angle / 45);
            angle = angle * 45;
        }

        if (Input.GetButtonDown("Fire1") && timer > fireRate)
        {
            timer = 0;
            var proj = pool.GetPoolable();
            proj.transform.position = (Vector2)shootPos + playerPhy.deltaVelocity;
            proj.gameObject.SetActive(true);
            Vector2 projDir = Quaternion.Euler(0, 0, angle) * Vector2.right;
            proj.Launch(projDir + Vector2.Scale(playerPhy.deltaVelocity, Vector2.right));
            audioSource.Play();
        }

        arrow.rotation   = Quaternion.Euler(0, 0, angle);
        arrow.localScale = new Vector3(playerPhy.facingSign, 1, 1);

        timer += Time.deltaTime;
    }