コード例 #1
0
    // Atualizaçao quadro-a-quadro
    void Update()
    {
        PlayerMoviment();
        if (wd.listaDados.Count > 300 && !(base.txtCriado))
        {
            wd.CriaTxt();
            Debug.Log("teste");
            base.txtCriado = true;
        }
        // A força de lançamento do projetil e igual ao vetor de distancia do
        // canhao ao ponteiro do mouse.
        Vector3 mousePos = Camera.main.ScreenToWorldPoint(Input.mousePosition);
        Vector2 dirMouse = mousePos - transform.position;

        m_force = dirMouse;

        // Desenha uma linha amarela no scene viewer do editor para indicar
        // visualmente o vetor de força
        Debug.DrawLine(transform.position, mousePos, Color.yellow);

        // Equipara a "altura" do alvo a do canhao
        Vector2 target = m_targetObject.transform.position;
        //target.y = transform.position.y;

        // Calcula os componentes de velocidade x e y
        float mass    = m_bulletPrefab.GetComponent <Rigidbody2D>().mass;
        float gravity = Physics.gravity.magnitude;

        float velX = m_force.magnitude / mass;
        float time = (target.x - transform.position.x) / velX;
        float velY = gravity * (time / 2);

        // Calcula o angulo de lançamento
        m_angle = (Mathf.Atan2(velY, velX) * Mathf.Rad2Deg) - 15;

        // Ajusta conforme o angulo em que o tiro "deve" atingir o alvo
        time = (target.x - Mathf.Sin((90 - m_angle) * Mathf.Deg2Rad) - transform.position.x) / velX;
        velY = gravity * (time / 2);

        // Calcula a velocidade e forma finais
        Vector2 velocity = new Vector2(velX, velY);

        m_force = velocity * mass;

        // Rotaciona o canhao para o angulo calculado
        transform.rotation = Quaternion.Euler(0f, 0f, m_angle);

        //Envia dados
        //EnviaDados(m_angle, m_force, m_targetObject.transform.position.x);
        showTrajectoryPoints();

        // Captura o pressionamento/liberaçao do botao do mouse
        // (somente se nao estiver sobre o checkbox da UI)
        if (!EventSystem.current.IsPointerOverGameObject())
        {
            if (Input.GetMouseButtonDown(0))
            {
                m_mousePressed = true;
            }

            if (Input.GetMouseButtonUp(0))
            {
                m_mousePressed = false;
                shootBullet();
            }
        }
    }