public void StartGame(string level) { Debug.Log("load " + level); Pints.Reset(); var tilemap = GameObject.Find("Tilemap").GetComponent <Tilemap>(); menu.SetActive(false); hud.SetActive(true); finishScreen.SetActive(false); tilemap.InitWithMap(level); _running = true; }
IEnumerator FadeOut() { GetComponent <Collider>().enabled = false; var renderer = transform.Find("enemy/Cube_001").GetComponent <Renderer>(); renderer.material = fadeMaterial; renderer.shadowCastingMode = ShadowCastingMode.Off; var color = renderer.material.color; const float fadeOutDuration = 2; float timer = fadeOutDuration; while (timer > 0) { timer -= Time.deltaTime; color.a = timer / fadeOutDuration; var fraction = Time.deltaTime / fadeOutDuration; Pints.AddPints(numberOfPints * fraction); renderer.material.color = color; yield return(0); } Destroy(gameObject); }
IEnumerator AttackPlayer() { Debug.Log(gameObject + " decides to attack"); int targetX = -1, targetY = -1; IEnumerator path = null; while (aware) { if (path == null || targetX != Mathf.Round(player.transform.position.x) || targetY != Mathf.Round(player.transform.position.y)) { Interrupt(path); targetX = (int)Mathf.Round(player.transform.position.x); targetY = (int)Mathf.Round(player.transform.position.y); path = WalkPathToPoint(player.transform.position); } if (Vector3.Distance(transform.position, player.transform.position) < 0.75) { Debug.Log(Vector3.Distance(transform.position, player.transform.position)); Pints.AddPints(-2f * Time.deltaTime); } yield return(path.MoveNext()); } interrupt = true; }
public void InitWithMap(string filename) { Pints.Init(); StartCoroutine(Pints.PintsDecay()); RenderSettings.ambientLight = Color.black; var grid = new List <List <Tile> >(); int x = 0, y = 0; var file = Resources.Load(filename) as TextAsset; foreach (var line in file.text.Split('\n')) { x = 0; var row = new List <Tile>(); grid.Add(row); foreach (var character in line) { var tile = Tile.EmptyTile; GameObject obj; switch (character) { case '#': CreateObject(wallObject, x, y).tag = "Map Tile"; tile = Tile.WallTile; break; case '!': CreateObject(playerObject, x, y); CreateFloor(x, y); break; case '?': CreateObject(coffinObject, x, y).tag = "Map Tile"; CreateFloor(x, y).tag = "Map Tile"; tile = Tile.WallTile; break; case 'E': CreateObject(enemyObject, x, y); CreateFloor(x, y).tag = "Map Tile"; break; case '+': CreateObject(crossObject, x, y).tag = "Map Tile"; CreateFloor(x, y).tag = "Map Tile"; tile = Tile.WallTile; break; case 'T': obj = CreateObject(torchObject, x, y); obj.tag = "Map Tile"; ObjectRegistry.instance.RegisterObjectForKey(obj, "Light"); CreateFloor(x, y).tag = "Map Tile"; break; case 'L': obj = CreateObject(torchObject, x, y); obj.transform.Rotate(Vector3.back, 90); obj.tag = "Map Tile"; ObjectRegistry.instance.RegisterObjectForKey(obj, "Light"); CreateFloor(x, y).tag = "Map Tile"; break; case 'W': obj = CreateObject(stakesObject, x, y); obj.tag = "Map Tile"; ObjectRegistry.instance.RegisterObjectForKey(obj, "Weapon"); CreateFloor(x, y).tag = "Map Tile"; break; case '_': tile = Tile.WallTile; break; default: CreateFloor(x, y).tag = "Map Tile"; break; } row.Add(tile); x++; } y++; } map = new Tile[grid[0].Count, grid.Count]; for (int i = 0; i < map.GetLength(0); i++) { for (int j = 0; j < map.GetLength(1); j++) { map[i, j] = grid[j][i]; } } PathFinder.Init(map); }