Example #1
0
    void get_clicked_on(ref clicked_on mouse_on, ref GameObject hit_game_object)
    {
        Vector3 pos = Camera.main.ScreenToWorldPoint (Input.mousePosition);

        int layerMask = 1 << 9;

        RaycastHit2D hit = Physics2D.Raycast(pos, Vector2.zero, Mathf.Infinity, layerMask);
        if (hit == null || hit.collider == null) {
            mouse_on = clicked_on.nothing;
            hit_game_object = null;
            return;
        }
        Debug.Log (hit.collider.name);
        hit_game_object = hit.collider.gameObject;
        if (hit.collider.name == "background") {
            mouse_on = clicked_on.background;
            return;
        }

        if (hit.collider.name == "good_tank") {
            mouse_on = clicked_on.good_tank;
            return;
        }
        mouse_on = clicked_on.nothing;
    }
Example #2
0
    void get_clicked_on(ref clicked_on mouse_on, ref GameObject hit_game_object)
    {
        Vector3 pos = Camera.main.ScreenToWorldPoint(Input.mousePosition);

        Debug.Log(LayerMask.NameToLayer("tank_p1"));

        int layerMask = ((1 << LayerMask.NameToLayer("tank_p1")) | (1 << LayerMask.NameToLayer("tank_p2")));

        RaycastHit2D hit = Physics2D.Raycast(pos, Vector2.zero, Mathf.Infinity, layerMask);

        if (hit == null || hit.collider == null)
        {
            mouse_on        = clicked_on.nothing;
            hit_game_object = null;
            return;
        }
        hit_game_object = hit.collider.gameObject;
        if (hit.collider.name == "background")
        {
            mouse_on = clicked_on.background;
            return;
        }

        if (hit.collider.gameObject.GetComponent <get_tank_proproties>().tank.GetComponent <tank_proproties>().is_good_tank)
        {
            mouse_on = clicked_on.good_tank;
            return;
        }
        mouse_on = clicked_on.nothing;
    }
Example #3
0
 public void reset()
 {
     mouse_on = clicked_on.nothing;
     mouse_diff = Vector3.zero;
     lineRenderer.enabled = false;
     ui_background.GetComponent<ScrollRect>().enabled = true;
     shot = false;
 }
Example #4
0
 public void reset()
 {
     mouse_on             = clicked_on.nothing;
     mouse_diff           = Vector3.zero;
     lineRenderer.enabled = false;
     ui_background.GetComponent <ScrollRect>().enabled = true;
     shot = false;
 }
Example #5
0
    // Use this for initialization
    void Start()
    {
        mouse_on = clicked_on.nothing;
        arrows   = new GameObject[max_amount_of_arrows];
        for (int i = 0; i < max_amount_of_arrows; i++)
        {
            arrows[i] = (GameObject)Instantiate(arrow);
            arrows[i].SetActive(false);
        }

        if (debug)
        {
            start_game(debug_tank);
        }
    }
Example #6
0
    void get_clicked_on_3d(ref clicked_on mouse_on, ref GameObject hit_game_object, Vector3 mousePosition)
    {
        int layerMask = ((1 << LayerMask.NameToLayer("tank_p1")) | (1 << LayerMask.NameToLayer("tank_p2")));

        Vector2 touchPos = new Vector2(mousePosition.x, mousePosition.y);

        Collider2D[] currentButtons = Physics2D.OverlapPointAll(touchPos, layerMask);

        Debug.Log(touchPos);
        foreach (Collider2D col in currentButtons)
        {
            get_tank_proproties tank_prop = col.gameObject.GetComponent <get_tank_proproties>();

            if (tank_prop && tank_prop.tank.GetComponent <tank_proproties>().is_good_tank)
            {
                Debug.Log("3");
                mouse_on = clicked_on.good_tank;
                return;
            }
        }

        mouse_on = clicked_on.background;
    }
Example #7
0
    // Update is called once per frame
    void Update()
    {
        //pressed first time
        if (Input.GetMouseButtonDown (0)) {

            mouse_diff = Vector3.zero;
            prev_mouseposition = Input.mousePosition;
            get_clicked_on(ref mouse_on, ref hit_game_object);

            if (mouse_on == clicked_on.good_tank){

                ui_background.GetComponent<ScrollRect>().enabled = false;

                /*
                Vector3 look_at_tank = new Vector3(hit_game_object.transform.position.x ,
                                                   hit_game_object.transform.position.y,
                                                   Camera.main.transform.position.z);
                Camera.main.transform.position = look_at_tank;
                */
            }

        } else {
            //conitune to press.
            if (Input.GetMouseButton(0)){
                mouse_diff += prev_mouseposition - Input.mousePosition;
                prev_mouseposition = Input.mousePosition;
            }
            //pick finger up
            if (Input.GetMouseButtonUp (0))  {

                if (mouse_on == clicked_on.good_tank){
                    ui_background.GetComponent<ScrollRect>().enabled = true;
                }

                mouse_on = clicked_on.nothing;
                for (int i = 0;i < max_amount_of_arrows ; i++ ){
                    arrows[i].SetActive(false);
                }

                if (shot){
                    shot = false;
                    GameObject new_bullet =(GameObject) Instantiate(good_tank_bullet);
                    new_bullet.transform.parent = the_game.transform;
                    new_bullet.transform.position = good_tank_canon_shoting_edge.transform.position;
                    Vector2 canon_angle_vec2 = new Vector2(diff_norm.x, diff_norm.y);
                    canon_angle_vec2 *=-1;
                    float distnace = Vector3.Distance(new_mouse_pos, good_tank.transform.position);

                    float distnace_ratio = distnace /( max_amount_of_arrows * size_of_arrow);

                    new_bullet.rigidbody2D.AddForce( canon_angle_vec2 * shoting_force * distnace_ratio);

                }

            }

        }

        //Debug.Log (mouse_on);

        if (mouse_on == clicked_on.background) {
            mouse_diff = mouse_diff * fade_move_speed;
            if (mouse_diff.sqrMagnitude > 0.01) {
                Camera.main.transform.position += (mouse_diff * (speed * Time.deltaTime));
            }
            return;
        }

        if (mouse_on == clicked_on.good_tank) {

            lineRenderer.enabled = true;
            shot = true;

            new_mouse_pos = new Vector3(Input.mousePosition.x,Input.mousePosition.y, 9.0f);
            new_mouse_pos = Camera.main.ScreenToWorldPoint(new_mouse_pos);

            float distnace = Vector3.Distance(new_mouse_pos, good_tank.transform.position);
            int amount_of_arrows = (int)(distnace / size_of_arrow);
            Vector3 diff = good_tank.transform.position - new_mouse_pos;
            diff_norm = diff.normalized * -1;
            if (amount_of_arrows >= max_amount_of_arrows){
                distnace = max_amount_of_arrows * size_of_arrow;
                amount_of_arrows = max_amount_of_arrows;

                new_mouse_pos = new Vector3(good_tank.transform.position.x + diff_norm.x * distnace,
                                      good_tank.transform.position.y + diff_norm.y * distnace,
                                      good_tank.transform.position.z);
                diff = good_tank.transform.position - new_mouse_pos;
            }

            scale_circle (good_tank.transform.position, distnace);
            canon_angle = Mathf.Atan2(diff.y,diff.x) * Mathf.Rad2Deg;

            int i;

            good_tank_canon.transform.rotation = Quaternion.AngleAxis(canon_angle, Vector3.forward);

            for (i = 0; i < amount_of_arrows; i++ ){
                arrows[i].SetActive(true);

                arrows[i].transform.rotation = Quaternion.AngleAxis(canon_angle, Vector3.forward);

                Vector3 arrow_pos = new Vector3(new_mouse_pos.x + (diff.x * i)/amount_of_arrows, new_mouse_pos.y + (diff.y * i)/amount_of_arrows, -1f);
                arrows[i].transform.position = arrow_pos;
            }
            for (;i < max_amount_of_arrows ; i++ ){
                arrows[i].SetActive(false);
            }
        }
        else{
            lineRenderer.enabled = false;
        }
    }
Example #8
0
    // Use this for initialization
    void Start()
    {
        mouse_on = clicked_on.nothing;
        arrows = new GameObject[max_amount_of_arrows];
        for (int i = 0; i < max_amount_of_arrows; i++) {
            arrows[i]=(GameObject) Instantiate(arrow);
            arrows[i].SetActive(false);
        }

        //circle part
        int size = (int)((2.0f * Mathf.PI) / theta_scale) + 2; //Total number of points in circle.

        lineRenderer = gameObject.AddComponent<LineRenderer>();
        lineRenderer.material = new Material(Shader.Find("Particles/Additive"));
        lineRenderer.SetColors(circle_color, circle_color);
        lineRenderer.SetWidth(circle_width, circle_width);
        lineRenderer.SetVertexCount(size);
        lineRenderer.enabled = false;

        scale_circle (good_tank.transform.position, 1.0f);
    }
Example #9
0
 // Use this for initialization
 void Start()
 {
     mouse_on = clicked_on.nothing;
     arrows = new GameObject[max_amount_of_arrows];
     for (int i = 0; i < max_amount_of_arrows; i++) {
         arrows[i]=(GameObject) Instantiate(arrow);
         arrows[i].SetActive(false);
     }
 }
Example #10
0
    // Update is called once per frame
    void Update()
    {
        Ray   ray = Camera.main.ScreenPointToRay(Input.mousePosition);
        Plane xy  = new Plane(Vector3.forward, new Vector3(0, 0, 0));
        float distance;

        xy.Raycast(ray, out distance);
        Vector3 mousePosition = ray.GetPoint(distance);

        Vector2 touchPos = new Vector2(mousePosition.x, mousePosition.y);

        /*
         * Debug.Log(mousePosition);
         * Debug.Log(Input.mousePosition);
         */

        if (!game_started)
        {
            return;
        }
        int i;

        //pressed first time
        if (Input.GetMouseButtonDown(0))
        {
            mouse_diff         = Vector3.zero;
            prev_mouseposition = mousePosition;
            Debug.Log("1");
            if (manager.is_my_turn() || debug)
            {
                get_clicked_on_3d(ref mouse_on, ref hit_game_object, mousePosition);
            }
            if (mouse_on == clicked_on.good_tank)
            {
                Debug.Log("2");
                ui_background.GetComponent <ScrollRect>().enabled = false;

                /*
                 * Vector3 look_at_tank = new Vector3(hit_game_object.transform.position.x ,
                 *                                 hit_game_object.transform.position.y,
                 *                                 Camera.main.transform.position.z);
                 * Camera.main.transform.position = look_at_tank;
                 */
            }
        }
        else
        {
            //conitune to press.
            if (Input.GetMouseButton(0))
            {
                if (manager.is_my_turn() == false)
                {
                    if (mouse_on == clicked_on.good_tank)
                    {
                        lineRenderer.enabled = false;

                        ui_background.GetComponent <ScrollRect>().enabled = true;

                        mouse_on = clicked_on.nothing;
                        for (i = 0; i < max_amount_of_arrows; i++)
                        {
                            arrows[i].SetActive(false);
                        }
                    }
                }
                else
                {
                    mouse_diff        += prev_mouseposition - mousePosition;
                    prev_mouseposition = mousePosition;

                    if ((mouse_on == clicked_on.good_tank) && (lineRenderer.enabled == false))
                    {
                        lineRenderer.enabled = true;
                    }
                }
            }
            //pick finger up
            if (Input.GetMouseButtonUp(0))
            {
                if (mouse_on == clicked_on.good_tank)
                {
                    ui_background.GetComponent <ScrollRect>().enabled = true;
                }

                mouse_on = clicked_on.nothing;
                for (i = 0; i < max_amount_of_arrows; i++)
                {
                    arrows[i].SetActive(false);
                }

                if (shot)
                {
                    shot = false;
                    shot_f();
                }
            }
        }

        //Debug.Log (mouse_on);

        if (mouse_on == clicked_on.background)
        {
            mouse_diff = mouse_diff * fade_move_speed;
            if (mouse_diff.sqrMagnitude > 0.01)
            {
                Camera.main.transform.position += (mouse_diff * (speed * Time.deltaTime));
            }
            return;
        }

        if (mouse_on == clicked_on.good_tank)
        {
            lineRenderer.enabled = true;
            shot = true;

            new_mouse_pos = new Vector3(mousePosition.x, mousePosition.y, 9.0f);
            new_mouse_pos = Camera.main.ScreenToWorldPoint(new_mouse_pos);

            /**
             * if camera is prespective
             */
            new_mouse_pos = mousePosition;

            float   distnace         = Vector3.Distance(new_mouse_pos, good_tank.transform.position);
            int     amount_of_arrows = (int)(distnace / size_of_arrow);
            Vector3 diff             = good_tank.transform.position - new_mouse_pos;
            diff_norm = diff.normalized * -1;
            if (amount_of_arrows >= max_amount_of_arrows)
            {
                distnace         = max_amount_of_arrows * size_of_arrow;
                amount_of_arrows = max_amount_of_arrows;

                new_mouse_pos = new Vector3(good_tank.transform.position.x + diff_norm.x * distnace,
                                            good_tank.transform.position.y + diff_norm.y * distnace,
                                            good_tank.transform.position.z);
                diff = good_tank.transform.position - new_mouse_pos;
            }

            if (distnace < min_distance)
            {
                shot = false;
                for (i = 0; i < amount_of_arrows; i++)
                {
                    arrows[i].SetActive(false);
                }
                lineRenderer.enabled = false;
                return;
            }

            scale_circle(good_tank.transform.position, distnace);
            canon_angle = Mathf.Atan2(diff.y, diff.x) * Mathf.Rad2Deg;

            good_tank_canon.transform.rotation = Quaternion.AngleAxis(canon_angle, Vector3.forward);
            for (i = 0; i < amount_of_arrows; i++)
            {
                arrows[i].SetActive(true);

                arrows[i].transform.rotation = Quaternion.AngleAxis(canon_angle, Vector3.forward);

                Vector3 arrow_pos = new Vector3(new_mouse_pos.x + (diff.x * i) / amount_of_arrows, new_mouse_pos.y + (diff.y * i) / amount_of_arrows, 0f);
                arrows[i].transform.position = arrow_pos;
            }
            for (; i < max_amount_of_arrows; i++)
            {
                arrows[i].SetActive(false);
            }
        }
        else
        {
            lineRenderer.enabled = false;
        }
    }