Esempio n. 1
0
    void Update()
    {
        tempxx = lastDir.ToString(); // Debuging purpose
        float   x         = Input.GetAxisRaw("Horizontal");
        float   y         = Input.GetAxisRaw("Vertical");
        Vector2 direction = new Vector2(x, y);


        if (x > 0 || TouchDirection.x > 0)
        {
            animator.SetBool("FacingRight", true);
            lastDir = lastDirection.Right;
        }
        else if (x < 0 || TouchDirection.x < 0)
        {
            animator.SetBool("FacingLeft", true);
            lastDir = lastDirection.Left;
        }
        else if (y > 0 || TouchDirection.y > 0)
        {
            animator.SetBool("FacingUp", true);
            lastDir = lastDirection.Up;
        }
        else if (y < 0 || TouchDirection.y < 0)
        {
            animator.SetBool("FacingDown", true);
            lastDir = lastDirection.Down;
        }
        switch (lastDir)
        {
        case lastDirection.Up:
            transform.rotation = Quaternion.Euler(new Vector3(0, 0, 0));
            ResetFacesCustom("FacingUp");
            break;

        case lastDirection.Down:
            transform.rotation = Quaternion.Euler(new Vector3(0, 180f, 180f));
            ResetFacesCustom("FacingDown");
            break;

        case lastDirection.Right:
            transform.rotation = Quaternion.Euler(new Vector3(0, 0, -90f));
            ResetFacesCustom("FacingRight");
            break;

        case lastDirection.Left:
            transform.rotation = Quaternion.Euler(new Vector3(180f, 0, 90f));
            ResetFacesCustom("FacingLeft");

            break;

        default:
            break;
        }

        #region fire

        if (Input.GetButtonDown("Fire1"))
        {
            //animator.SetTrigger("Shoot");
            Rigidbody2D bulletInstance = new Rigidbody2D();

            if (lastDir == lastDirection.Right)
            {
                // ... instantiate the bullet_pref Facing right and set it's velocity to the right.
                bulletInstance          = Instantiate(bullet_pref, transform.position, Quaternion.Euler(new Vector3(0, 0, 0))) as Rigidbody2D;
                bulletInstance.velocity = new Vector2(bullet_speed, 0);
                Vector3 temp = bulletInstance.transform.position;
                temp.x += 0.2f;
                bulletInstance.transform.position = temp;
                bulletInstance.transform.rotation = Quaternion.Euler(new Vector3(0, 180f, 90f));
            }
            else if (lastDir == lastDirection.Left)
            {
                // Otherwise instantiate the bullet_pref Facing left and set it's velocity to the left.
                bulletInstance          = Instantiate(bullet_pref, transform.position, Quaternion.Euler(new Vector3(0, 0, 180f))) as Rigidbody2D;
                bulletInstance.velocity = new Vector2(-bullet_speed, 0);
                Vector3 temp = bulletInstance.transform.position;
                temp.x -= 0.2f;
                bulletInstance.transform.position = temp;
                bulletInstance.transform.rotation = Quaternion.Euler(new Vector3(0, 0, 90f));
            }
            else if (lastDir == lastDirection.Up)
            {
                bulletInstance          = Instantiate(bullet_pref, transform.position, Quaternion.Euler(new Vector3(180f, 0, 0))) as Rigidbody2D;
                bulletInstance.velocity = new Vector2(0, bullet_speed);
                Vector3 temp = bulletInstance.transform.position;
                temp.y += 0.2f;
                bulletInstance.transform.position = temp;
                bulletInstance.transform.rotation = Quaternion.Euler(new Vector3(0, 0, 0));
            }
            else if (lastDir == lastDirection.Down)
            {
                bulletInstance          = Instantiate(bullet_pref, transform.position, Quaternion.Euler(new Vector3(0, 180f, 0))) as Rigidbody2D;
                bulletInstance.velocity = new Vector2(0, -bullet_speed);
                Vector3 temp = bulletInstance.transform.position;
                temp.y -= 0.2f;
                bulletInstance.transform.position = temp;
                bulletInstance.transform.rotation = Quaternion.Euler(new Vector3(0, 0, 180f));
            }
            Destroy(bulletInstance.gameObject, 5);
        }

        #endregion

        if (IsTouching == false)
        {
            if (Mathf.Abs(direction.x) > 0 || Mathf.Abs(direction.y) > 0)
            {
                Move(direction);
            }
            else if (Mathf.Abs(direction.x) > 0 && Mathf.Abs(direction.y) > 0)
            {
                Move(direction);
            }
            else
            {
                animator.SetBool("Moving", false);
                ResetFaces();
            }
        }
        else
        {
            // Debug.Log("ruch z toucha: " + TouchDirection.ToString());
            Move(TouchDirection);
        }
    }