private void ClickUnit(GameClickEventData clickEventData) { var input = clickEventData.input; if (!input.isUIInteraction && !input.isDrag && !clickEventData.isUsed) { var worldPos = Camera.main.ScreenToWorldPoint(Input.mousePosition); var mouse2D = new Vector2(worldPos.x, worldPos.y); //var ray = Camera.main.ScreenPointToRay(Input.mousePosition); var results = Physics2D.RaycastAll(mouse2D, Vector2.zero, 100, mapUnitMask); List <MapUnit> units = new List <MapUnit>(); foreach (var hit in results) { if (hit.collider != null && hit.collider.transform.parent != null) { var unit = hit.collider.transform.parent.GetComponent <MapUnit>(); if (unit != null) { units.Add(unit); } } } foreach (var unit in units.OrderByDescending(unit => unit is MapShip)) { unit.OnClickEvent(); break; } } }
private void TouchEnd(TouchInput input) { var clickEventData = new GameClickEventData(input); ClickTile(clickEventData); ClickUnit(clickEventData); cameraController.OnMouseDragEndEvent(input); }
private void OnGameTileClickedEvent(GameTile tile, GameClickEventData clickEventData) { if (currentCommand == UnitCommandType.Move && selectedUnit != null && selectedUnit is MapMobileUnit) { var mobileUnit = selectedUnit as MapMobileUnit; mobileUnit.SetMovePosition(tile.position); clickEventData.isUsed = true; } currentCommand = UnitCommandType.None; }
private void ClickTile(GameClickEventData clickEventData) { var input = clickEventData.input; if (!input.isUIInteraction && !input.isDrag && !clickEventData.isUsed) { var worldPos = Camera.main.ScreenToWorldPoint(Input.mousePosition); var tilePos = Pathfinder.tilemap.WorldToCell(worldPos); var gameTile = Pathfinder.GetGameTile(tilePos); if (gameTile != null) { if (OnGameTileClickEvent != null) { OnGameTileClickEvent(gameTile, clickEventData); } } } }