コード例 #1
0
        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;
            }
        }
コード例 #2
0
ファイル: S_Level.cs プロジェクト: nicorivas/game1
    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));
            }
        }
    }
コード例 #3
0
ファイル: S_Volcano.cs プロジェクト: nicorivas/game1
    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);
                }
            }
        }
    }
コード例 #4
0
 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);
     }
 }
コード例 #5
0
ファイル: S_TerrainTile.cs プロジェクト: nicorivas/game1
    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;
    }
コード例 #6
0
    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++;
        }
    }
コード例 #7
0
ファイル: S_PowerBlock.cs プロジェクト: nicorivas/game1
 public override void Action()
 {
     S_Terrain.SpawnBlock(S_Terrain.GetRandomCoordinates());
 }
コード例 #8
0
ファイル: S_PowerMagma.cs プロジェクト: nicorivas/game1
 public override void Action()
 {
     S_Terrain.SinkTile(S_Terrain.GetRandomCoordinates());
 }