Exemplo n.º 1
0
    // Update is called once per frame
    void Update()
    {
        if (!is_alive)
        {
            if (!GetComponent <ParticleSystem>().isPlaying)
            {
                Destroy(gameObject);
                GameOverHandler.OnGameOver();
            }
            return;
        }

        //position
        rb.velocity = Vector3.right * Input.GetAxis("Horizontal") * speed + Vector3.up * Input.GetAxis("Vertical") * speed;

        //rotation

        /*Vector2 mv = new Vector2(Input.GetAxis("Mouse X"), Input.GetAxis("Mouse Y"));
         * if (mv.magnitude > 0.1)
         * {
         *  float angle = Vector2.SignedAngle(Vector2.up, mv);
         *  Vector3 desiredAngle = new Vector3(0f, 0f, angle);
         *
         *  transform.localEulerAngles = desiredAngle;
         * }*/

        Camera cam = Camera.current;

        if (cam != null)
        {
            Vector2 mousepos     = Input.mousePosition;
            Vector2 playerpos    = cam.WorldToScreenPoint(transform.position);
            float   angle        = Vector2.SignedAngle(Vector2.up, mousepos - playerpos);
            Vector3 desiredAngle = new Vector3(0f, 0f, angle);
            transform.localEulerAngles = desiredAngle;
        }


        //shoot
        if (Input.GetButton("Fire1") && shootingTimeout <= 0f)
        {
            shootingTimeout = 1f / shootingRate;
            GameObject  go = Instantiate(projectile);
            Rigidbody2D rb = go.GetComponent <Rigidbody2D>();
            go.transform.position = transform.position + transform.up * 0.6f;
            rb.velocity           = transform.up * projectileSpeed;
        }
        shootingTimeout -= Time.deltaTime;
    }