// World text pop up at mouse position public static void TextPopupMouse(string text, Vector3?offset = null) { if (offset == null) { offset = Vector3.one; } UtilsClass.CreateWorldTextPopup(text, UtilsClass.GetMouseWorldPosition() + (Vector3)offset); }
public virtual void PlaceWorldTile(Vector3 _placePosition) { _grid.GetXY(_placePosition, out int x, out int z); Vector2Int _placedObjectOrigin = new Vector2Int(x, z); List <Vector2Int> gridPositionList = placedWorldTileTypeSO.GetGridPositionList(_placedObjectOrigin, dir); bool canBuild = true; foreach (Vector2Int gridPosition in gridPositionList) { if (!_grid.GetGridObject(gridPosition.x, gridPosition.y).CanBuild()) { canBuild = false; break; } } if (canBuild) { Vector2Int rotationOffset = placedWorldTileTypeSO.GetRotationOffset(dir); Vector3 placedObjectWorldPosition = _grid.GetWorldPosition(x, z) + new Vector3(rotationOffset.x, rotationOffset.y) * _grid.GetCellSize(); PlacedObject_WorldTile placedObject = PlacedObject_WorldTile.Create(WorldTileParent, StartingAspects, placedObjectWorldPosition, _placedObjectOrigin, dir, placedWorldTileTypeSO); placedObject.transform.rotation = Quaternion.Euler(0, 0, -placedWorldTileTypeSO.GetRotationAngle(dir)); foreach (Vector2Int gridPosition in gridPositionList) { _grid.GetGridObject(gridPosition.x, gridPosition.y).SetPlacedObject(placedObject); } //OnObjectPlaced?.Invoke(this, EventArgs.Empty); //DeselectObjectType(); } else { // Cannot build here UtilsClass.CreateWorldTextPopup("Cannot Build Here!", _placePosition); } }
// Creates a Text pop up at the world position public static void TextPopup(string text, Vector3 position) { UtilsClass.CreateWorldTextPopup(text, position); }
// World text pop up at mouse position public static void TextPopupMouse(string text) { UtilsClass.CreateWorldTextPopup(text, UtilsClass.GetMouseWorldPosition()); }
// Creates a Text pop up at the world position public static void TextPopup(string text, Vector3 position, float popupTime = 1f) { UtilsClass.CreateWorldTextPopup(text, position, popupTime); }
private void Update() { // 当点击的地板有建筑时,应该抬起重放 if (Input.GetMouseButtonDown(0) && placedObjectTypeSO == null) { Vector3 mousePosition = Mouse3D.GetMouseWorldPosition(); if (grid.GetGridObject(mousePosition) != null) { // Valid Grid Position PlacedObject_Done placedObject = grid.GetGridObject(mousePosition).GetPlacedObject(); if (placedObject != null) { // Demolish placedObject.DestroySelf(); List <Vector2Int> gridPositionList = placedObject.GetGridPositionList(); foreach (Vector2Int gridPosition in gridPositionList) { grid.GetGridObject(gridPosition.x, gridPosition.y).ClearPlacedObject(); } placedObjectTypeSO = placedObject.PlacedObjectTypeSO; RefreshSelectedObjectType(); return; } } } if (Input.GetMouseButtonDown(0) && placedObjectTypeSO != null) { Vector3 mousePosition = Mouse3D.GetMouseWorldPosition(); grid.GetXZ(mousePosition, out int x, out int z); Vector2Int placedObjectOrigin = new Vector2Int(x, z); placedObjectOrigin = grid.ValidateGridPosition(placedObjectOrigin); // Test Can Build List <Vector2Int> gridPositionList = placedObjectTypeSO.GetGridPositionList(placedObjectOrigin, dir); bool canBuild = true; foreach (Vector2Int gridPosition in gridPositionList) { if (!grid.GetGridObject(gridPosition.x, gridPosition.y).CanBuild()) { canBuild = false; break; } } if (canBuild) { Vector2Int rotationOffset = placedObjectTypeSO.GetRotationOffset(dir); Vector3 placedObjectWorldPosition = grid.GetWorldPosition(placedObjectOrigin.x, placedObjectOrigin.y) + new Vector3(rotationOffset.x, 0, rotationOffset.y) * grid.GetCellSize(); PlacedObject_Done placedObject = PlacedObject_Done.Create(placedObjectWorldPosition, placedObjectOrigin, dir, placedObjectTypeSO); foreach (Vector2Int gridPosition in gridPositionList) { grid.GetGridObject(gridPosition.x, gridPosition.y).SetPlacedObject(placedObject); } OnObjectPlaced?.Invoke(this, EventArgs.Empty); //DeselectObjectType(); } else { // Cannot build here UtilsClass.CreateWorldTextPopup("Cannot Build Here!", mousePosition); } } if (Input.GetKeyDown(KeyCode.R)) { dir = PlacedObjectTypeSO.GetNextDir(dir); } if (Input.GetKeyDown(KeyCode.Alpha1)) { placedObjectTypeSO = placedObjectTypeSOList[0]; RefreshSelectedObjectType(); } if (Input.GetKeyDown(KeyCode.Alpha2)) { placedObjectTypeSO = placedObjectTypeSOList[1]; RefreshSelectedObjectType(); } if (Input.GetKeyDown(KeyCode.Alpha3)) { placedObjectTypeSO = placedObjectTypeSOList[2]; RefreshSelectedObjectType(); } if (Input.GetKeyDown(KeyCode.Alpha4)) { placedObjectTypeSO = placedObjectTypeSOList[3]; RefreshSelectedObjectType(); } if (Input.GetKeyDown(KeyCode.Alpha5)) { placedObjectTypeSO = placedObjectTypeSOList[4]; RefreshSelectedObjectType(); } if (Input.GetKeyDown(KeyCode.Alpha6)) { placedObjectTypeSO = placedObjectTypeSOList[5]; RefreshSelectedObjectType(); } if (Input.GetKeyDown(KeyCode.Alpha0)) { DeselectObjectType(); } if (Input.GetMouseButtonDown(1)) { Vector3 mousePosition = Mouse3D.GetMouseWorldPosition(); if (grid.GetGridObject(mousePosition) != null) { // Valid Grid Position PlacedObject_Done placedObject = grid.GetGridObject(mousePosition).GetPlacedObject(); if (placedObject != null) { // Demolish placedObject.DestroySelf(); List <Vector2Int> gridPositionList = placedObject.GetGridPositionList(); foreach (Vector2Int gridPosition in gridPositionList) { grid.GetGridObject(gridPosition.x, gridPosition.y).ClearPlacedObject(); } } } } }