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; } }
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; } }
/// <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); }
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; } }
// 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); }
//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); }
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; } } }
/// <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); }
// 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 //} }
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); }