/// <summary> /// 移动建筑物到指定位置 /// </summary> /// <param name="x"></param> /// <param name="y"></param> public void DraggingBuildingTo(int x, int y) { //REMARK 一个建筑格子占2个小格子 if (x % 2 == 1) { x -= 1; } if (y % 2 == 1) { y -= 1; } if (currentBuilding.GetTilePos().x == x && currentBuilding.GetTilePos().y == y) { return; } if (!draged) { draged = true; EventDispather.DispatherEvent(GameEvents.BEGIN_DRAG_BUILDING); } currentBuilding.SetTilePosition(new TilePoint(x, y)); currentBuilding.view.transform.position = currentBuilding.GetRenderPosition(); var pos = IsoHelper.GridToPosition(x, y); buildableView.gameObject.SetActive(true); buildableView.transform.position = pos; IsoHelper.MoveAlongCamera(buildableView.transform, 5f); buildArrow.transform.position = pos; // IsoHelper.MoveAlongCamera(buildArrow.transform,-1f); buildConfirm.transform.position = pos; IsoHelper.MoveAlongCamera(buildConfirm.transform, -1f); // 是否可以建造 buildableView.SetBuildable(IsoMap.Instance.CanPlaceBuilding(x, y, currentBuilding.width, currentBuilding.height)); }
public void SelectBuilding(TileEntity building) //临时去掉占地数据,记录原始位置,添加选择状态 { building.OnSelected(); oldX = building.GetTilePos().x; oldY = building.GetTilePos().y; currentBuilding = building; IsoMap.Instance.BeginMoveEntity(building); buildableView.Init(building.width); buildArrow.Init(building.width); buildArrow.gameObject.SetActive(true); buildArrow.transform.position = IsoHelper.GridToPosition(building.GetTilePos()); }
public void Init(int size) { foreach (Transform child in transform) { Destroy(child.gameObject); } for (int i = 0; i < size; i++) { for (int j = 0; j < size; j++) { var tile = Instantiate(smallTilePrefab, IsoHelper.GridToPosition(i, j), Quaternion.identity) as GameObject; tile.transform.position = IsoHelper.GridToPosition(i, j); var localPos = tile.transform.localPosition; tile.transform.parent = transform; tile.transform.localPosition = localPos; IsoHelper.FaceToWorldCamera(tile.transform); } } }