Beispiel #1
0
    public Player(WorldGenerator wg, ProceduralGenerator pg, string resourceString, Vector3 position, Behaviour behaviour)
    {
        this.wg = wg;
        this.pg = pg;

        gameObject = wg.CreatePlayer(resourceString, position);

        if (behaviour.Equals(Behaviour.Human))
        {
            PlayerMove pm = gameObject.AddComponent <PlayerMove> ();
            pm.behaviour = Behaviour.Human;
            pm.pg        = pg;
            PlayerInteraction pi = gameObject.AddComponent <PlayerInteraction> ();
            pi.pg = pg;
            gameObject.AddComponent <Inventory> ();
        }
        else if (behaviour.Equals(Behaviour.Bot))
        {
            PlayerMove pm = gameObject.AddComponent <PlayerMove> ();
            pm.behaviour = Behaviour.Bot;
            pm.pg        = pg;
            //BotMove bm = gameObject.AddComponent<BotMove> ();
            //bm.pg = pg;
        }
    }
Beispiel #2
0
 private void OnTriggerExit(Collider collider)
 {
     if (collider.tag == "startSpawn")
     {
         Destroy(collider.gameObject);
         return;
     }
     else if (collider.tag == "deactivator")
     {
         deactivatedObject = collider.gameObject;
         if (lightningController != null)
         {
             lightningController.AllSetInactive();
         }
         ProceduralGenerator.DeactivateChallenge(deactivatedObject);
     }
     else if (collider.tag == "Player")
     {
         isInsideDestroy = false;
     }
     else
     {
         return;
     }
 }
Beispiel #3
0
 /// <summary>
 /// Solicita los datos de la malla en un hilo externo
 /// </summary>
 /// <param name="heightAndColoMap"></param>
 public void SolicitDataOfMeshInExternalThread(HeightMapAndColorArray heightAndColoMap)
 {
     _dataOfMeshHasBeenSolicit = true;
     if (_generator == null)
     {
         _generator = FindObjectOfType <ProceduralGenerator>();
     }
     _generator.SolicitMesh(heightAndColoMap, _LOD, DataOfMeshHasBeenReceived);
 }
Beispiel #4
0
 private void OnTriggerEnter(Collider crystal)
 {
     if (crystal.gameObject.tag == "Player")
     {
         ProceduralGenerator.AddDiamondBackToQueue(gameObject);
         GameManager.collectedDiamonds.Value += 1;
         GameManager.collectParticleEffect.Play();
     }
 }
{ private void OnTriggerEnter(Collider crystal)
  {
      if (crystal.gameObject.tag == "Player")
      {
          RelicUsageController.RelicChargeRecharge();
          ProceduralGenerator.AddChargeBackToQueue(gameObject);
          GameManager.collectParticleEffect.Play();
          GameManager.collectedDiamonds.Value += 1;
      }
  }
Beispiel #6
0
    // Update is called once per frame
    void Update()
    {
        ProceduralGenerator pg = GameObject.Find("Environment").GetComponent <ProceduralGenerator>();

        //Debug.Log("function called, target = " + pg.altnewx);
        float ly = this.transform.position.y;
        float lz = this.transform.position.z;


        Vector3 endpos = new Vector3(pg.altnewx, ly, lz);

        this.transform.position = Vector3.Lerp(this.transform.position, endpos, Time.deltaTime);
    }
Beispiel #7
0
    //private RectTransform deathPanel = null;

    // Use this for initialization
    void Start()
    {
        foreach (Image ri in gameObject.GetComponentsInChildren <Image>())
        {
            if (ri.gameObject.name == "Restart" || ri.gameObject.name == "HighScore" || ri.gameObject.name == "Quit")
            {
                ri.alphaHitTestMinimumThreshold = 0.5f;
            }
        }

        foreach (GameObject go in SceneManager.GetActiveScene().GetRootGameObjects())
        {
            foreach (Transform child in go.GetComponentsInChildren <Transform>())
            {
                if (scoreSys == null && child.name == "KMsText")
                {
                    scoreSys = new ScoreSystem(child.GetComponent <Text>());
                }
            }
        }

        for (int i = 0; i < 10; ++i)
        {
            highScores.Add(PlayerPrefs.GetFloat(GlobalScript.TableTag + GlobalScript.ScoreTag + i, float.NaN));
        }

        scoreSys.Start();

        GameObject[] rootGameObjects = gameObject.scene.GetRootGameObjects();
        foreach (GameObject go in rootGameObjects)
        {
            if (pgInstance == null)
            {
                pgInstance = go.GetComponentInChildren <ProceduralGenerator>();
            }
            if (bmInstance == null)
            {
                bmInstance = go.GetComponentInChildren <ButtonMovement>();
            }

            if (pgInstance != null && bmInstance != null)
            {
                break;
            }
        }

        DeathMenuUI.SetActive(false);
    }
Beispiel #8
0
 void OnMouseOver()
 {
     // If the left mouse button is pressed
     if (Input.GetMouseButtonDown(0))
     {
         Debug.Log("Left click!");
         Destroy(this.transform.parent.gameObject);
     }
     // If the right mouse button is pressed
     if (Input.GetMouseButtonDown(1))
     {
         Debug.Log("Right click!");
         // Call method from WorldGenerator class
         ProceduralGenerator.CloneAndPlace(this.transform.parent.transform.position + delta, // N = C + delta
                                           this.transform.parent.gameObject);                // The parent GameObject
     }
 }
    ProceduralGenerator GenerateMapFromRandom()
    {
        ProceduralGenerator mapGen = GetComponent <ProceduralGenerator>();

        width  = mapGen.GetWidth();
        height = mapGen.GetHeight();
        Color32[] colorMap = mapGen.GenerateMap();
        GenerateMapPreview(colorMap);

        MapData.Width         = width;
        MapData.Height        = height;
        MapData.ColorMap      = colorMap;
        MapData.BaseLocationX = mapGen.GetBaseLocationX();
        MapData.BaseLocationY = mapGen.GetBaseLocationY();

        return(mapGen);
    }
    /// <summary>
    /// Exit trigger collision reactions for maven
    /// </summary>
    /// <param name="playerCollision"></param>
    private void OnTriggerExit(Collider playerCollision)
    {
        if (playerCollision.gameObject.tag == "jump_counter")
        {
            ProceduralGenerator.jumpsTaken.Value++;
            ProceduralGenerator.AddJumpCounterbackToQueue(playerCollision.gameObject);
        }

        if (playerCollision.gameObject.tag == "end_of_level")
        {
            particleDanger.SetActive(false);

            if (DestroyCollider.isInsideDestroy)
            {
                GameOverScreenController.gameOver.Value = true;
            }
        }
    }
Beispiel #11
0
    /// <summary>
    /// contructor de la clase Chunk
    /// </summary>
    /// <param name="coord"></param>
    /// <param name="size"></param>
    /// <param name="infoLOD_Array"></param>
    /// <param name="transformOfParent"></param>
    /// <param name="material"></param>
    /// <param name="generator"></param>
    public Chunk(Vector2 coord, int size, InfoLOD[] infoLOD_Array, Transform transformOfParent, Material material, ProceduralGenerator generator)
    {
        _position    = coord * size;
        _coordinates = coord;


        _infoLOD_Array    = infoLOD_Array;
        _generator        = generator;
        _chunkHasResource = false;

        //creación del objeto de Unity
        Vector3 posisiton3D = new Vector3(_position.x, 0, _position.y);

        _gameObject            = new GameObject("Chunk");
        _meshCollider          = _gameObject.AddComponent <MeshCollider>();
        _meshRenderer          = _gameObject.AddComponent <MeshRenderer>();
        _meshRenderer.material = material;
        _meshFilter            = _gameObject.AddComponent <MeshFilter>();

        _gameObject.transform.position   = posisiton3D * _generator.ScaleChunkSize;
        _gameObject.transform.parent     = transformOfParent;
        _gameObject.transform.localScale = new Vector3(1, 1, 1) * _generator.ScaleChunkSize;

        //no se quiere que se muestre desde el principio. más a delante se establece se se muestra o no.
        _gameObject.SetActive(false);


        _bounds = new Bounds(_position, new Vector2(1, 1) * size);


        _meshLOD_Array = new MeshWithLOD[infoLOD_Array.Length];
        for (int i = 0; i < infoLOD_Array.Length; i++)
        {
            _meshLOD_Array[i] = new MeshWithLOD(infoLOD_Array[i].LOD, UpdateThisChunk);
            if (infoLOD_Array[i].UseForCollide)
            {
                _meshForCollider = _meshLOD_Array[i];
            }
        }

        //Los dos primeros parametros son necesario spara el calculo de los mapas
        //El ultimo es la función que se va a ejecutar cuando se desencole dentro del hilo principal de Unity
        _generator.SolicitHeightMapAndColorArray(_coordinates, _position, applyTheHeightMapAndColorArrayToTheObject);
    }
Beispiel #12
0
    // Finding player and managers in the scene
    private void _FindObjects()
    {
        // Find player and set starting color and camera offset
        player = GameObject.FindObjectOfType <Player>();
        player.UpdateColor(colors[currIndex]);

        // If ever add a second camera, this would need to be changed
        mainCam   = Camera.main;
        camOffset = player.transform.position - mainCam.transform.position;

        // Find other managers
        pg = GameObject.FindObjectOfType <ProceduralGenerator>();
        pm = GameObject.FindObjectOfType <PauseMenuManager>();

        playPanel = GameObject.FindGameObjectWithTag("PlayPanel");

        adsController = GameObject.FindObjectOfType <AdsController>();

        musicManager = GameObject.FindObjectOfType <MusicManager>();
    }
    // Use this for initialization
    void Start()
    {
        generator = new ProceduralGenerator();

        seed = new SeedGenerator("a totally random seed", 7);

        origin = generator.initalise(CHUNK_SIZE, seed);

        if (ENABLE_MENU)
        {
            canvas = (GameObject)Instantiate(Resources.Load("Menu/Canvas"), new Vector3(0, 0, 0), Quaternion.identity);

            camera = (GameObject)Instantiate(Resources.Load("Menu/Camera"), new Vector3(origin.x + 0, origin.y + 20, origin.z + 60), Quaternion.LookRotation(new Vector3(0.0f, -0.3f, -1.0f)));
        }
        else
        {
            InitPlayer();
        }

        //while (generator.generateMap (origin) == true) {
        //Loading
        //}
    }
Beispiel #14
0
    public Chunk(Vector3 worldOffset, ProceduralGenerator generator, bool isBelowSurface = false)
    {
        this.worldOffset = worldOffset;
        this.generator   = generator;
        secondPass       = false;

        if (isBelowSurface)
        {
            return;
        }

        for (int x = 0; x < CHUNK_SIZE; x++)
        {
            for (int y = 0; y < CHUNK_SIZE; y++)
            {
                for (int z = 0; z < CHUNK_SIZE; z++)
                {
                    //Calculate absolute position of block (world space)
                    int worldX = (int)worldOffset.x + x;
                    int worldY = (int)worldOffset.y + y;
                    int worldZ = (int)worldOffset.z + z;

                    //Generate a scaled X and Z for input into PerlinNoise function
                    float perlinX = ((float)worldX) / CHUNK_SIZE;
                    float perlinZ = ((float)worldZ) / CHUNK_SIZE;

                    float perlinTerrainType = Mathf.PerlinNoise(perlinX / 30, perlinZ / 30);

                    float perlinTerrain = Mathf.PerlinNoise(perlinX / 10, perlinZ / 10) * 2; //perlin between 0.0 and 1.0
                    perlinTerrain = Mathf.Pow(perlinTerrain, 3);

                    int perlinY = (int)(Mathf.PerlinNoise(perlinX / 3, perlinZ / 3) * CHUNK_SIZE * perlinTerrain);

                    string blockType = null;

                    const float WATER_TYPE = 0.25f;

                    if (perlinTerrainType < WATER_TYPE)
                    {
                        //int seaDescent = (int) (perlinTerrainType * 3.0f);
                        perlinY *= 0;

                        blockType = "WaterBlock";
                    }
                    else if (perlinTerrainType < 0.4f)
                    {
                        float       islandEdge    = perlinTerrainType - WATER_TYPE;
                        const float tweenDistance = 0.02f;
                        const float tweenScale    = 1.0f / tweenDistance;

                        if (islandEdge < tweenDistance)
                        {
                            perlinY = (int)(perlinY * islandEdge * tweenScale);
                        }

                        blockType = "FastGrass";
                    }
                    else
                    {
                        blockType = "FastDirt";
                    }

                    perlinY = (perlinY + y) - (int)worldOffset.y;

                    if (perlinY >= 0 && perlinY < CHUNK_SIZE)
                    {
                        CreateBlock(blockType, x, perlinY, z);
                    }
                }
            }
        }

        //TREE_GEN
        for (int x = 0; x < CHUNK_SIZE; x++)
        {
            for (int z = 0; z < CHUNK_SIZE; z++)
            {
                //DESCEND
                for (int y = CHUNK_SIZE - 1; y >= 0; y--)
                {
                    int worldY = (int)worldOffset.y + y;

                    if (blocks[x, y, z] != null && blocks[x, y, z].resourceString == "FastGrass")
                    {
                        float per = Mathf.PerlinNoise((worldOffset.x + x) * 0.02f, (worldOffset.z + z) * 0.02f);
                        //Debug.Log(per);
                        per = Mathf.Pow(per, 2);
                        if (per < 0.05f && Random.Range(0, 100) < 10.0f)
                        {
                            if (!canDrawTree(x, y, z))
                            {
                                break;
                            }
                            int treeTopSize = 3;
                            int logLength   = Random.Range(3, CHUNK_SIZE - treeTopSize);
                            int y2;
                            for (y2 = y; y2 < y + logLength; y2++)
                            {
                                CreateBlockInOtherChunk("LogBlock", x, y2, z);
                            }


                            for (int x2 = x - 1; x2 <= x + 1; x2++)
                            {
                                for (int z2 = z - 1; z2 <= z + 1; z2++)
                                {
                                    for (int y3 = y2; y3 <= y2 + treeTopSize; y3++)
                                    {
                                        CreateBlockInOtherChunk("LeafBlock", x2, y3, z2);
                                    }
                                }
                            }
                        }
                        break;
                    }
                }
            }
        }

        //WATER_GEN

        /*
         *      for (int x = 0; x < CHUNK_SIZE; x++)
         *      {
         *              for (int z = 0; z < CHUNK_SIZE; z++)
         *              {
         *                      //DESCEND
         *                      for (int y = CHUNK_SIZE-1; y >= 0; y--)
         *                      {
         *                              int worldY = (int)worldOffset.y + y;
         *
         *                              if (blocks [x, y, z] != null) {
         *                                      break;  //quit descending this y, as hit ground
         *                              }
         *
         *                              if (worldY > 7 && worldY < 9) {
         *                                      CreateBlock ("WaterBlock", x, y, z);
         *                              }
         *                      }
         *              }
         *      }
         */
        drawChunk();
    }
 public void GeneratePreview()
 {
     ProceduralGenerator gen       = GenerateMapFromRandom();
     Vector2             baseStart = new Vector2(-width / 2 + gen.GetBaseLocationX() - 0.5f, -height / 2 + gen.GetBaseLocationY() - 0.5f);
 }