void SetTarget() { int tries = 0; while (tries < 50) { if (movementType == movementTypes.random) { target = initialPosition + transform.forward * Random.Range(minRandomMagnitude, maxRandomMagnitude); } else if (movementType == movementTypes.nextTilesOrigin) { target = initialPosition + Quaternion.AngleAxis(Random.Range(0, 4) * 90f, Vector3.up) * Vector3.left * S_Terrain.tileWidth; } else if (movementType == movementTypes.insideCircle) { target = initialPosition + Quaternion.AngleAxis(Random.Range(0f, 360f), Vector3.up) * Vector3.left * Random.Range(minRandomMagnitude, maxRandomMagnitude); } else if (movementType == movementTypes.nextTiles) { target = characterActor.Position + Quaternion.AngleAxis(Random.Range(0, 4) * 90f, Vector3.up) * Vector3.left * S_Terrain.tileWidth; } if (S_Terrain.PositionInside(target)) { break; } tries += 1; } }
public void Build() { initialEnemies = 0; TextAsset levelJson = Resources.Load <TextAsset>(filename); LevelData levelData = JsonUtility.FromJson <LevelData>(levelJson.text); gameObjects = new List <GameObject>(); if (levelData.enemies != null) { foreach (EnemyCoords enemy in levelData.enemies) { S_Terrain.SpawnEnemy(S_Terrain.ParseCoords(enemy.coords), enemy.name); initialEnemies += 1; } enemiesN = initialEnemies; } if (levelData.height != null) { foreach (HeightCoords hdata in levelData.height) { //S_Terrain.RiseTile(hdata.coords, hdata.height); S_Terrain.SinkTile(S_Terrain.ParseCoords(hdata.coords)); //S_Terrain.SpawnBlock(S_Terrain.ParseCoords(hdata.coords)); } } }
void Erupt() { //Debug.Log("S_Volcano:Erupt"); //m_Animator.SetTrigger("Grow12"); GameObject terrainTile = S_Terrain.GetRandomTileNeighbour(x, z); if (Random.value < 0.0) { // Fire terrainTile.GetComponent <S_TerrainTile>().EruptionStart(); //} else { // // Rock // GameObject rock = terrainTile.GetComponent<S_TerrainTile>().CreateRock(); // rock.GetComponent<S_Rock>().AddFireEnergy(10); } else { // Magma if (magmas.Count == 0) { GameObject magma = terrainTile.GetComponent <S_TerrainTile>().CreateMagma(); magma.GetComponent <S_Magma>().SetVolcano(gameObject); magmas.Add(magma); } else { foreach (GameObject magma in magmas) { magma.GetComponent <S_TerrainObject>().AddFireEnergy(10); } } } }
protected override void Tick(object sender, S_World.OnTickEventArgs e) { base.Tick(sender, e); text.GetComponent <TextMesh>().text = "L:" + level + " Le:" + energy["life"]; if (tick % growTicks == 0) { int lifeLevelToAdd = 0; // Energy from distance to water if (S_Terrain.DistanceToWater(gameObject) < 2f) { if (level < 3) { lifeLevelToAdd += 2; } } // Energy from terrain type if (terrainTile.GetComponent <S_TerrainTile>().GetTileType() == S_Terrain.TERRAIN_TYPES["grassland"]) { if (level == 1) { lifeLevelToAdd += 2; } } if (terrainTile.GetComponent <S_TerrainTile>().GetTileType() == S_Terrain.TERRAIN_TYPES["plains"]) { if (level == 1) { lifeLevelToAdd += 1; } } if (terrainTile.GetComponent <S_TerrainTile>().GetTileType() == S_Terrain.TERRAIN_TYPES["desert"]) { if (GetObjectType() == TREE_TYPE["cactus"]) { if (level == 1) { lifeLevelToAdd += 2; } } else { lifeLevelToAdd -= 1; } } // Flower if (objectType == TREE_TYPE["cactus"]) { if (level == 3) { if (Random.value < 0.05) { CreateFlower(); } } } AddLifeEnergy(lifeLevelToAdd); } }
public void CalculateHumidity() { // Distance to water float distanceToWater = S_Terrain.DistanceToWater(gameObject); humidity = (10.0f / Mathf.Exp(distanceToWater)) * (1.0f - (temperature / 350f)); humidity += Humidity_Temperature.Evaluate((temperature - Config.Temperature_Min) / (Config.Temperature_Max - Config.Temperature_Min)) * 10.0f; //if (temperature > 10.0f && temperature < 25.0f) // humidity += 10.0f; }
static public void SpawnPowers() { int[,] coords = new int[, ] { { 3, 4 }, { 5, 4 } }; int i = 0; int powerIndex = 0; int count = 0; int powerUps = 2; while (i < powerUps && count < 100) { powerIndex = Random.Range(0, powersData.powers.Length); if (Random.value < powersData.powers[powerIndex].prob) { S_Terrain.SpawnPower( new Vector2Int(coords[i, 0], coords[i, 1]), powersData.powers[powerIndex].name); i++; } powerIndex++; } }
public override void Action() { S_Terrain.SpawnBlock(S_Terrain.GetRandomCoordinates()); }
public override void Action() { S_Terrain.SinkTile(S_Terrain.GetRandomCoordinates()); }