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; }
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; }
public void reset() { mouse_on = clicked_on.nothing; mouse_diff = Vector3.zero; lineRenderer.enabled = false; ui_background.GetComponent<ScrollRect>().enabled = true; shot = false; }
public void reset() { mouse_on = clicked_on.nothing; mouse_diff = Vector3.zero; lineRenderer.enabled = false; ui_background.GetComponent <ScrollRect>().enabled = true; shot = false; }
// 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); } }
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; }
// 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; } }
// 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); }
// 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); } }
// 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; } }