public void RemoveMonster(MonsterSpawnLocation monster) { print("Cleaning up monster "); if (monster.gameObject != null) { Destroy(monster.gameObject); } monsters.Remove(monster); }
private void CheckMonsters() { if (Random.value > monsterSpawnRate) { var mlat = GPSLocationService.Instance.Latitude + Random.Range(-latitudeSpawnOffset, latitudeSpawnOffset); var mlon = GPSLocationService.Instance.Longitude + Random.Range(-longitudeSpawnOffset, longitudeSpawnOffset); var monster = new MonsterSpawnLocation { location = new MapLocation(mlon, mlat), spawnTimestamp = GPSLocationService.Instance.PlayerTimestamp }; monsters.Add(monster); } //store players location for easy access in distance calculations var playerLocation = new MapLocation(GPSLocationService.Instance.Longitude, GPSLocationService.Instance.Latitude); //get the current Epoch time in seconds var now = Epoch.Now; foreach (MonsterSpawnLocation m in monsters) { var d = MathG.Distance(m.location, playerLocation); if (MathG.Distance(m.location, playerLocation) < monsterSeeDistance) { m.lastSeenTimestamp = now; m.footstepRange = 4; if (m.gameObject == null) { print("Monster seen, distance " + d + " started at " + m.spawnTimestamp); SpawnMonster(m); } else { m.gameObject.SetActive(true); //make sure the monster is visible } continue; } if (MathG.Distance(m.location, playerLocation) < monsterHearDistance) { m.lastHeardTimestamp = now; var footsteps = CalculateFootstepRange(d); m.footstepRange = footsteps; print("Monster heard, footsteps " + footsteps); } //hide monsters that can't be seen if (m.gameObject != null) { m.gameObject.SetActive(false); } } }
private void SpawnMonster(MonsterSpawnLocation monster) { var lon = monster.location.Longitude; var lat = monster.location.Latitude; var position = ConvertToWorldSpace(lon, lat); var rotation = Quaternion.AngleAxis(Random.Range(0, 360), Vector3.up); monster.gameObject = (GameObject)Instantiate(monsterPrefab, position, rotation); var controller = monster.gameObject.AddComponent <MonsterController>(); controller.monsterSpawnLocation = monster; controller.monsterService = this; monster.gameObject.transform.parent = transform; }