private void DesativarAnterior() { if (objetoSelecionado != null) { objetoSelecionado.DesativarSelection(); } if (objetoSelecionadoSpaceShip != null) { objetoSelecionadoSpaceShip = null; } if (_lineRenderer != null) { _lineRenderer.positionCount = 0; } UIManager.Instancia.DesativarSelectionPanel(); UIManager.Instancia.RemoverButtonCriarNave(); }
void Update() { if (Input.GetMouseButtonDown(0) && Funcionar == true) { #region Mouse Vector3 mousePos = _camera.ScreenToWorldPoint(Input.mousePosition); Vector2 mousePos2D = new Vector2(mousePos.x, mousePos.y); #endregion // Verifica se clicou em uma nave. int mask = LayerMask.GetMask("Naves"); var hit = Physics2D.Raycast(mousePos2D, Vector2.zero, 10, mask); if (hit.collider != null) { DesativarAnterior(); if (hit.collider.TryGetComponent <Objeto>(out var objeto)) { if (hit.collider.TryGetComponent <ObjetoSpaceShip>(out var spaceShip)) { objetoSelecionado = objeto; objeto.MostrarSelection(); objetoSelecionadoSpaceShip = spaceShip; UIManager.Instancia.AtualizarSpaceShipPanel(spaceShip.Nome, spaceShip.TipoNave, objeto.Dono); } else { Debug.LogError("Script SpaceShip não encontrado neste objeto!"); } return; } } else if (true) { #region Verificacao Planeta ou Construção // Verifica se clicou em alguma construção, e depois um planeta. mask = LayerMask.GetMask("PlanetaConstrucao"); hit = Physics2D.Raycast(mousePos2D, Vector2.zero, 10, mask); if (hit.collider != null) { DesativarAnterior(); if (hit.collider.TryGetComponent <Objeto>(out var objeto)) { #endregion switch (objeto.tipoObjeto) { case EnumObjetos.Planeta: if (hit.collider.TryGetComponent <ObjetoPlaneta>(out var planet)) { objetoSelecionado = objeto; objeto.MostrarSelection(); if (objeto.idJogadorAtual == 1) { UIManager.Instancia.MostraButtonCriarNave(); } UIManager.Instancia.AtualizarPlanetPanel(planet.nome, planet.qualidade, planet.tamanho, planet.tipo, objeto.Dono); } else { Debug.LogError("Script Planet não encontrado neste objeto!"); } break; } return; } else { Debug.LogError("Script Objeto não encontrado neste objeto!"); } } else { // Verifica se clicou na UI. Caso não tenha, remove seleção. PointerEventData cursor = new PointerEventData(EventSystem.current); cursor.position = Input.mousePosition; List <RaycastResult> objectsHit = new List <RaycastResult>(); EventSystem.current.RaycastAll(cursor, objectsHit); if (objectsHit.Count == 0) { DesativarAnterior(); } } } } //Botão direito em algo if (Input.GetMouseButtonDown(1) && Funcionar == true) { if (objetoSelecionadoSpaceShip != null) { if (objetoSelecionado.DonoIsJogador) { Objeto alvo = null; Vector3 mousePos = _camera.ScreenToWorldPoint(Input.mousePosition); Vector2 mousePos2D = new Vector2(mousePos.x, mousePos.y); int mask = LayerMask.GetMask("Naves"); var hit = Physics2D.Raycast(mousePos2D, Vector2.zero, 10, mask); if (hit.collider != null) { hit.collider.TryGetComponent(out alvo); } else if (true) { // Verifica se clicou em alguma construção, e depois um planeta. mask = LayerMask.GetMask("PlanetaConstrucao"); hit = Physics2D.Raycast(mousePos2D, Vector2.zero, 10, mask); if (hit.collider != null) { hit.collider.TryGetComponent(out alvo); } else { // Verifica se clicou na UI. Caso não tenha move a espaconave para a posição desejada. PointerEventData cursor = new PointerEventData(EventSystem.current); cursor.position = Input.mousePosition; List <RaycastResult> objectsHit = new List <RaycastResult>(); EventSystem.current.RaycastAll(cursor, objectsHit); if (objectsHit.Count == 0) { objetoSelecionadoSpaceShip.alvo = mousePos2D; objetoSelecionadoSpaceShip.mover = true; } } } } } } }