public void CreateMapObject(int tileX, int tileY, eMapObjectType type, string name) { TileSystem tileSystem = TileSystem.Instance; GameObject prefab = GetPrefabByType(type); GameObject go = Instantiate(prefab); go.InitTransformAsChild(tileSystem.GetTilemap(eTilemapType.GROUND).transform); eTileLayer layer = eTileLayer.NONE; MapObject mapObject = null; switch (type) { case eMapObjectType.ITEM: ItemObject itemObject = go.AddComponent <ItemObject>(); Item item = Resources.Load <Item>("Items/" + name); itemObject.Init(item); mapObject = itemObject; layer = eTileLayer.ITEM; break; } TileCell tileCell = tileSystem.GetTileCell(tileX, tileY); if (null != tileCell) { tileCell.SetObject(mapObject, layer); } }
public void SetCanvasLayer(eTileLayer layer) { GameObject canvasObject = transform.Find("Canvas").gameObject; int sortingID = SortingLayer.NameToID(layer.ToString()); canvasObject.GetComponent <Canvas>().sortingLayerID = sortingID; }
override public void SetSortingOrder(eTileLayer layer, int sortingOrder) { _tileLayer = layer; int sortingID = SortingLayer.NameToID(layer.ToString()); _characterView.GetComponent <SpriteRenderer>().sortingLayerID = sortingID; _characterView.GetComponent <SpriteRenderer>().sortingOrder = sortingOrder; }
//Sort virtual public void SetSortingOrder(eTileLayer layer, int sortingOrder) { _tileLayer = layer; int sortingID = SortingLayer.NameToID(layer.ToString()); gameObject.GetComponent <SpriteRenderer>().sortingLayerID = sortingID; gameObject.GetComponent <SpriteRenderer>().sortingOrder = sortingOrder; }
public List <MapObject> GetMapObjectList(eTileLayer layer) { if (0 == _mapObjectMap[(int)layer].Count) { return(null); } return(_mapObjectMap[(int)layer]); }
public void AddObject(eTileLayer layer, MapObject mapObject) { List <MapObject> mapObjectList = _mapObjectMap[(int)layer]; int sortingOder = mapObjectList.Count; mapObject.SetSortingOrder(layer, sortingOder); mapObject.SetPosition(_position); mapObjectList.Add(mapObject); }
public void AddObject(eTileLayer layer, MapObject mapObject) { List <MapObject> mapObjectList = _mapObjectMap[(int)layer]; int sortingID = SortingLayer.NameToID(layer.ToString()); int sortingOrder = mapObjectList.Count; mapObject.SetSortingOrder(sortingID, sortingOrder); mapObject.SetPosition(_position); mapObjectList.Add(mapObject); }
//GROUND 타일맵에 깔린 타일 오브젝트들 정보 //타일 정렬되어 있어야함!! void InitTileCell() { eTileLayer layer = eTileLayer.GROUND; for (int y = 0; y < _height; y++) { for (int x = 0; x < _width; x++) { int index = y * _width + x; GameObject tile = _tilemaps[eTilemapType.GROUND].transform.GetChild(index).gameObject; TileObject tileObject = tile.GetComponent <TileObject>(); GetTileCell(x, y).Init(tile.GetComponent <SpriteRenderer>().sortingOrder); Vector3 pos = _grid.CellToWorld(new Vector3Int(x, y, 0)); float gridCenterY = (pos.y + _grid.cellSize.y / 2); float offset = 0.0f; if (tile.transform.position.y.EqualApproximately(gridCenterY, 0.01f)) { offset = 0.0f; } else { if (tile.transform.position.y < gridCenterY) { offset = gridCenterY - tile.transform.position.y; } else { offset = tile.transform.position.y - gridCenterY; } } //test pathfinding SpriteRenderer spriteRenderer = tile.GetComponent <SpriteRenderer>(); GetTileCell(x, y).SetSpriteRenderer(spriteRenderer); GetTileCell(x, y).SetTileObject(tileObject); GetTileCell(x, y).SetOffset(offset); GetTileCell(x, y).SetPosition(tile.transform.position); //객체 월드 포지션 GetTileCell(x, y).SetTilePosition(x, y); //타일 좌표 GetTileCell(x, y).AddObject(tileObject, layer); Tile baseTile = _tilemaps[eTilemapType.BLOCK].GetTile(new Vector3Int(x, y, 0)) as Tile; if (baseTile != null && baseTile.sprite != null) { GetTileCell(x, y).SetCanMove(false); } else { GetTileCell(x, y).SetCanMove(true); } } } }
//타일셀 정보에서 제거 public void RemoveObject(MapObject mapObject, eTileLayer layer) { if (eTileLayer.NONE != layer) { if (eTileLayer.ITEM == layer) { _itemLayerOrder--; } List <MapObject> mapObjectList = _mapObjectListByLayer[(int)layer]; mapObjectList.Remove(mapObject); } }
public MapObject FindObjectByType(eMapObjectType mapObjectType, eTileLayer layer) { List <MapObject> mapObjects = _mapObjectListByLayer[(int)layer]; for (int i = 0; i < mapObjects.Count; i++) { if (mapObjectType == mapObjects[i].GetMapObjectType()) { return(mapObjects[i]); } } return(null); }
public HashSet <MapObject> FindObjectsByRange(eMapObjectType type, eTileLayer layer, TileCell center, int range = 1) { int minX = center.GetTileX() - range; int minY = center.GetTileY() - range; int maxX = center.GetTileX() + range; int maxY = center.GetTileY() + range; if (minX < 0) { minX = 0; } if (minY < 0) { minY = 0; } if (_width <= maxX) { maxX = _width; } if (_height <= maxY) { maxY = _height; } HashSet <MapObject> mapObjects = new HashSet <MapObject>(); for (int y = minY; y <= maxY; y++) { for (int x = minX; x <= maxX; x++) { var mapObject = GetTileCell(x, y)?.FindObjectByType(type, layer); if (null != mapObject) { mapObjects.Add(mapObject); } } } if (0 == mapObjects.Count) { return(null); } return(mapObjects); }
public sTileProperties GetProperties(eTileLayer layer) { sTileProperties tileProperties = new sTileProperties(); tileProperties.speed = 0.0f; List <MapObject> mapObjectList = _mapObjectListByLayer[(int)layer]; for (int i = 0; i < mapObjectList.Count; i++) { if (eMapObjectType.TILEOBJECT == mapObjectList[i].GetMapObjectType()) { TileObject tileObject = mapObjectList[i].GetComponent <TileObject>(); tileProperties = tileObject.GetProperties(); return(tileProperties); } } return(tileProperties); }
//타일셀 정보에 추가 public void AddObject(MapObject mapObject, eTileLayer layer, bool setTilePos = true) { List <MapObject> mapObjectList = _mapObjectListByLayer[(int)layer]; if (!mapObjectList.Contains(mapObject)) //중복삽입 방지 { mapObjectList.Add(mapObject); } if (eTileLayer.RANGE == layer) { return; } if (eTileLayer.ITEM == layer) { //아이템: 최신이 제일 앞에 오게 mapObject.GetComponent <SpriteRenderer>().sortingOrder = _itemLayerOrder; _itemLayerOrder++; } else { if (eMapObjectType.CHARACTER != mapObject.GetMapObjectType() && eMapObjectType.PLAYER != mapObject.GetMapObjectType() && eMapObjectType.ENEMY != mapObject.GetMapObjectType()) { mapObject.GetComponent <SpriteRenderer>().sortingOrder = _groundLayerOrder; } } mapObject.SetCurrentLayer(layer); int sortingLayerID = SortingLayer.NameToID(layer.ToString()); mapObject.GetComponentInChildren <SpriteRenderer>().sortingLayerID = sortingLayerID; if (setTilePos) { mapObject.SetTilePosition(_tileX, _tileY); } }
public void SetObject(int tileX, int tileY, MapObject mapObject, eTileLayer layer) { TileCell tileCell = GetTileCell(tileX, tileY); tileCell.AddObject(layer, mapObject); }
public void SetCurrentLayer(eTileLayer layer) { _currentLayer = layer; }
//타일셀 정보 추가 및 포지션까지 세팅 public void SetObject(MapObject mapObject, eTileLayer layer) { AddObject(mapObject, layer); mapObject.SetPosition(_position); }