// Update is called once per frame void Update() { transform.localPosition += moveDirection * Time.deltaTime * MeatBehaviour.Speed; timeToChangeMoveDirection -= Time.deltaTime; if (terrain == null) { GameObject go = GameObject.Find("Tile Map"); if (go != null) { terrain = go.GetComponent <PATileTerrain>(); } } PlayerAI ai = getPlayerAI(); Vector3 direction = ai.transform.localPosition - transform.localPosition; direction.y = 0; if (direction.sqrMagnitude <= MeatBehaviour.SightDistance * MeatBehaviour.SightDistance) { this.attackObject(ai.gameObject, direction.normalized, direction.sqrMagnitude); } else if (timeToChangeMoveDirection <= 0) { changeMoveDirection(); } else if (transform.localPosition.x <= 0 || transform.localPosition.x >= terrain.width || transform.localPosition.z <= 0 || transform.localPosition.z >= terrain.height) { moveDirection *= -1; timeToChangeMoveDirection = changeInterval; } }
void Awake() { if (terrain == null) { GameObject go = GameObject.Find("PATileTerrain"); if (go != null) terrain = go.GetComponent<PATileTerrain>(); } }
void EditCrystal() { if (!CheckEditCrystal()) { return; } RaycastHit hit; Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition); Vector3 pos; int x, y; if (Physics.Raycast(ray, out hit, Mathf.Infinity, editCrystalLayerMask)) { PATileTerrain tt = tileTerrain.IsTerrain(hit.transform); Shuijing hitShuijing = hit.transform.GetComponent <Shuijing>(); if (tt != null) { if (toPlaceBuilding == null) { SetSelectShuijing(null); Messenger <PATileTerrain.PATile> .Broadcast(UIEvent.UIEvent_ShowSelectCrystal, null); } else { pos = tileTerrain.transform.InverseTransformPoint(hit.point); x = (int)Mathf.Abs(pos.x / tileTerrain.tileSize); y = (int)Mathf.Abs(pos.z / tileTerrain.tileSize); PATileTerrain.PATile tile = tileTerrain.GetTile(x, y); PATileTerrain.PABuildingTile buildingTile = PATileTerrain.PABuildingTile.GetByTile(tileTerrain, tile); Shuijing shuijing = toPlaceBuilding as Shuijing; if (!CheckCrystalDistance(buildingTile.keyTile, shuijing)) { Messenger.Broadcast(UIEvent.UIEvent_CrystalDistanceTip); return; } PlaceCrystal(shuijing, buildingTile); shuijing.SetSelectTag(false); RepaintAllCrystals(); //PaintCrystal(shuijing); toPlaceBuilding = null; //SetSelectShuijing(shuijing); Messenger.Broadcast(TerrainManagerEvent_PlaceBuilding); } } else if (hitShuijing != null && toPlaceBuilding == null) { SetSelectShuijing(hitShuijing); MoveCameraToPos(hitShuijing.transform, MoveToCrystalCallBack); } else { SetSelectShuijing(null); } } }
public static PABuildingTile GetByTile(PATileTerrain tileTerrain, PATile tile) { PABuildingTile buildingTile = new PABuildingTile(); int x = tile.x / 2; int y = tile.y / 2; buildingTile.keyTile = tileTerrain.GetTile(x * 2, y * 2); return(buildingTile); }
public Vector3 GetBuildingPos(PATileTerrain tileTerrain) { if (keyTile == null) { return(Vector3.zero); } Vector3 pos = new Vector3(keyTile.position.x + tileTerrain.settings.tileSize / 2, 0, keyTile.position.z + tileTerrain.settings.tileSize / 2); return(tileTerrain.transform.TransformPoint(pos)); }
public void CheckEdge(PATileTerrain tileTerrain) { if (!root.activeInHierarchy) { return; } Cloud[] neighborClouds = tileTerrain.GetNeighboringCloudsNxN(indexX, indexY, 1); Cloud leftCloud = neighborClouds[1]; Cloud topCloud = neighborClouds[3]; Cloud rightCloud = neighborClouds[5]; Cloud bottomCloud = neighborClouds[7]; List <Cloud> pointCloud = new List <Cloud>(); pointCloud.Add(leftCloud); pointCloud.Add(topCloud); pointCloud.Add(rightCloud); pointCloud.Add(bottomCloud); for (int i = 0; i < pointCloud.Count; i++) { Cloud neighborCloud = pointCloud[i]; if (neighborCloud == null) { continue; } if (!neighborCloud.root.activeInHierarchy) { int randomIndex = RandomManager.instance.Range(0, edges.Count); edges[randomIndex].SetActive(true); normal.SetActive(false); if (!rightCloud.root.activeInHierarchy) { edges[randomIndex].transform.localRotation = Quaternion.Euler(0, 180, 0); } else if (!topCloud.root.activeInHierarchy) { edges[randomIndex].transform.localRotation = Quaternion.Euler(0, 90, 0); } else if (!bottomCloud.root.activeInHierarchy) { edges[randomIndex].transform.localRotation = Quaternion.Euler(0, 270, 0); } else { edges[randomIndex].transform.localRotation = Quaternion.identity; } return; } } }
void Awake() { if (terrain == null) { GameObject go = GameObject.Find("PATileTerrain"); if (go != null) { terrain = go.GetComponent <PATileTerrain>(); } } }
public PATile[] GetOtherTiles(PATileTerrain tileTerrain) { if (keyTile == null) { return(null); } PATile[] otherTiles = new PATile[3]; otherTiles[0] = tileTerrain.GetTile(keyTile.x, keyTile.y + 1); otherTiles[1] = tileTerrain.GetTile(keyTile.x + 1, keyTile.y + 1); otherTiles[2] = tileTerrain.GetTile(keyTile.x + 1, keyTile.y); return(otherTiles); }
// Use this for initialization void Start() { health = MeatBehaviour.InitialHealth; timeToChangeMoveDirection = changeInterval; GameObject go = GameObject.Find("Tile Map"); if (go != null) { terrain = go.GetComponent <PATileTerrain>(); } timeBetweenAttacks = 0.0f; (this.GetComponent("SpriteRenderer") as SpriteRenderer).sprite = Resources.Load <Sprite> ("worm"); }
public override TaskStatus OnUpdate() { GameObject terrainGo = GameObject.FindGameObjectWithTag("SurfaceTerrain"); PATileTerrain tileTerrain = terrainGo.GetComponent <PATileTerrain>(); Vector3 pos = tileTerrain.transform.InverseTransformPoint(storeHitPoint.Value); int x = (int)Mathf.Abs(pos.x / tileTerrain.tileSize); int y = (int)Mathf.Abs(pos.z / tileTerrain.tileSize); PATileTerrain.PATile tile = tileTerrain.GetTile(x, y); var currentGameObject = GetDefaultGameObject(targetGameObject.Value); if (currentGameObject != prevGameObject) { prevGameObject = currentGameObject; } animals = currentGameObject.GetComponent <Animals>(); if (animals == null) { return(TaskStatus.Failure); } if (animals.elementType == Animals.ElementType.Fire) { if (tile.element.IsFire()) { return(TaskStatus.Success); } else { return(TaskStatus.Failure); } } else if (animals.elementType == Animals.ElementType.Wood) { if (tile.element.IsWood()) { return(TaskStatus.Success); } else { return(TaskStatus.Failure); } } return(TaskStatus.Success); }
// Use this for initialization void Start() { MeatBehaviour.InitialHealth = 5; MeatBehaviour.Speed = 1; MeatBehaviour.Strength = 1; MeatBehaviour.SightDistance = 10; timeToSpawnMeat = initialTimeToSpawn; timeToSpawnPlant = initialTimeToSpawn; timeToSpawnAlcohol = initialTimeToSpawn; GameObject go = GameObject.Find("Tile Map"); if (go != null) terrain = go.GetComponent<PATileTerrain>(); plantSpawnFactor = 0.4f; meatSpawnFactor = 0.4f; alcoholSpawnFactor = 0.08f; }
// Use this for initialization void Start() { MeatBehaviour.InitialHealth = 5; MeatBehaviour.Speed = 1; MeatBehaviour.Strength = 1; MeatBehaviour.SightDistance = 10; timeToSpawnMeat = initialTimeToSpawn; timeToSpawnPlant = initialTimeToSpawn; timeToSpawnAlcohol = initialTimeToSpawn; GameObject go = GameObject.Find("Tile Map"); if (go != null) { terrain = go.GetComponent <PATileTerrain>(); } plantSpawnFactor = 0.4f; meatSpawnFactor = 0.4f; alcoholSpawnFactor = 0.08f; }
void EditBuilding() { if (!CheckEditBuilding()) { return; } RaycastHit hit; Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition); Vector3 pos; int x, y; if (Physics.Raycast(ray, out hit, Mathf.Infinity, editCrystalLayerMask)) { PATileTerrain tt = tileTerrain.IsTerrain(hit.transform); NestBuilding hitNest = hit.transform.GetComponent <NestBuilding>(); HatchBuilding hitHatch = hit.transform.GetComponent <HatchBuilding>(); if (tt != null) { pos = tileTerrain.transform.InverseTransformPoint(hit.point); x = (int)Mathf.Abs(pos.x / tileTerrain.tileSize); y = (int)Mathf.Abs(pos.z / tileTerrain.tileSize); PATileTerrain.PATile tile = tileTerrain.GetTile(x, y); PATileTerrain.PABuildingTile buildingTile = PATileTerrain.PABuildingTile.GetByTile(tileTerrain, tile); if (toPlaceBuilding is NestBuilding && buildingTile.keyTile.affectShuijing != null) { NestBuilding nest = toPlaceBuilding as NestBuilding; PlaceNest(nest, buildingTile); toPlaceBuilding = null; //Messenger.Broadcast(TerrainManagerEvent_PlaceBuilding); } } else if (hitNest != null && toPlaceBuilding == null) { Messenger.Broadcast(UIEvent.UIEvent_ShowSelectNest); } else if (hitHatch != null && toPlaceBuilding == null) { Messenger <int> .Broadcast(UIEvent.UIEvent_ShowHatch, hitHatch.hatchId); } } }
void movePlayer() { transform.localPosition += moveDirection * Time.deltaTime * this.speed; if (terrain == null) { GameObject go = GameObject.Find("Tile Map"); if (go != null) { terrain = go.GetComponent <PATileTerrain>(); } } if (state == State.Searching) { timeToChangeMoveDirection -= Time.deltaTime; if (timeToChangeMoveDirection <= 0) { changeMoveDirection(); } else { if (transform.localPosition.x <= 0 || transform.localPosition.x >= terrain.width) { timeToChangeMoveDirection = changeInterval; moveDirection.x *= -1; } if (transform.localPosition.z <= 0 || transform.localPosition.z >= terrain.height) { timeToChangeMoveDirection = changeInterval; moveDirection.z *= -1; } } this.search(); } else { Vector3 dir = target.transform.localPosition - transform.localPosition; dir.y = 0; this.attackObject(target, dir.normalized, dir.sqrMagnitude); } }
// Use this for initialization void Start() { moveDirection = this.randomMoveDirection(); GameObject go = GameObject.Find("Tile Map"); if (go != null) { terrain = go.GetComponent <PATileTerrain>(); } plantDistance = 2; meatDistance = 2; strength = 0; maxHealth = 100; health = 100; poisoningToHealth = 0.1f; alcoholTolerance = 0; poisoning = 0; poisoningFall = 1; panel = (PanelBehaviour)FindObjectOfType(typeof(PanelBehaviour)); state = State.Searching; }
public bool CheckAreaType(PATileTerrain tileTerrain) { if (closeTile == null) { return(false); } if (!CheckCloseTileElementType()) { return(false); } if (areaType == AreaType.Area1X1) { return(true); } PATileTerrain.PATile[] nTiles = tileTerrain.GetNeighboringTilesNxN(closeTile, 1); if (areaType == AreaType.Area2X2) { for (int i = 5; i < nTiles.Length; i++) { if (!CheckElementType(nTiles[i])) { return(false); } } } else if (areaType == AreaType.Area3X3) { for (int i = 0; i < nTiles.Length; i++) { if (!CheckElementType(nTiles[i])) { return(false); } } } return(true); }
PATileTerrain.PATile GetTileByPoint(PATileTerrain tileTerrain, Transform vPointTrans) { RaycastHit hit; Ray ray = new Ray(new Vector3(vPointTrans.position.x, vPointTrans.position.y + 100, vPointTrans.position.z), Vector3.down); Physics.Raycast(ray, out hit, Mathf.Infinity, TerrainManager.instance.terrainChunkLayermask); //PATileTerrain tt = tileTerrain.IsTerrain(hit.transform); //if (tt == null) // return null; if (hit.transform == null) { return(null); } Vector3 pos = tileTerrain.transform.InverseTransformPoint(hit.point); int x = (int)Mathf.Abs(pos.x / tileTerrain.tileSize); int y = (int)Mathf.Abs(pos.z / tileTerrain.tileSize); PATileTerrain.PATile tile = tileTerrain.GetTile(x, y); return(tile); }
public void CheckShow(PATileTerrain tileTerrain) { Vector3 boundLBPos = boxBoundLB.position; Vector3 boundLTPos = new Vector3(boxBoundLB.position.x, boxBoundLB.position.y, boxBoundRT.position.z); Vector3 boundRTPos = boxBoundRT.position; Vector3 boundRBPos = new Vector3(boxBoundRT.position.x, boxBoundLB.position.y, boxBoundLB.position.z); PATileTerrain.PATile hitTileLB = tileTerrain.GetTileByRay(boundLBPos, Vector3.down); PATileTerrain.PATile hitTileLT = tileTerrain.GetTileByRay(boundLTPos, Vector3.down); PATileTerrain.PATile hitTileRT = tileTerrain.GetTileByRay(boundRTPos, Vector3.down); PATileTerrain.PATile hitTileRB = tileTerrain.GetTileByRay(boundRBPos, Vector3.down); if (PATileTerrain.PATile.IsNotBaseElement(hitTileLB) || PATileTerrain.PATile.IsNotBaseElement(hitTileLT) || PATileTerrain.PATile.IsNotBaseElement(hitTileRT) || PATileTerrain.PATile.IsNotBaseElement(hitTileRB)) { Hide(); } else { Show(); } }
// Update is called once per frame void Update() { transform.localPosition += moveDirection * Time.deltaTime * MeatBehaviour.Speed; timeToChangeMoveDirection -= Time.deltaTime; if (terrain == null) { GameObject go = GameObject.Find("Tile Map"); if (go != null) terrain = go.GetComponent<PATileTerrain>(); } PlayerAI ai = getPlayerAI (); Vector3 direction = ai.transform.localPosition - transform.localPosition; direction.y = 0; if (direction.sqrMagnitude <= MeatBehaviour.SightDistance * MeatBehaviour.SightDistance) { this.attackObject(ai.gameObject, direction.normalized, direction.sqrMagnitude); } else if (timeToChangeMoveDirection <= 0) { changeMoveDirection(); } else if (transform.localPosition.x <= 0 || transform.localPosition.x >= terrain.width || transform.localPosition.z <= 0 || transform.localPosition.z >= terrain.height) { moveDirection *= -1; timeToChangeMoveDirection = changeInterval; } }
// Use this for initialization void Start() { health = MeatBehaviour.InitialHealth; timeToChangeMoveDirection = changeInterval; GameObject go = GameObject.Find("Tile Map"); if (go != null) terrain = go.GetComponent<PATileTerrain>(); timeBetweenAttacks = 0.0f; (this.GetComponent("SpriteRenderer") as SpriteRenderer).sprite = Resources.Load<Sprite> ("worm"); }
// Use this for initialization void Start() { moveDirection = this.randomMoveDirection (); GameObject go = GameObject.Find("Tile Map"); if (go != null) terrain = go.GetComponent<PATileTerrain>(); plantDistance = 2; meatDistance = 2; strength = 0; maxHealth = 100; health = 100; poisoningToHealth = 0.1f; alcoholTolerance = 0; poisoning = 0; poisoningFall = 1; panel = (PanelBehaviour) FindObjectOfType(typeof(PanelBehaviour)); state = State.Searching; }
void movePlayer() { transform.localPosition += moveDirection * Time.deltaTime * this.speed; if (terrain == null) { GameObject go = GameObject.Find("Tile Map"); if (go != null) terrain = go.GetComponent<PATileTerrain>(); } if (state == State.Searching) { timeToChangeMoveDirection -= Time.deltaTime; if (timeToChangeMoveDirection <= 0) { changeMoveDirection (); } else { if (transform.localPosition.x <= 0 || transform.localPosition.x >= terrain.width) { timeToChangeMoveDirection = changeInterval; moveDirection.x *= -1; } if (transform.localPosition.z <= 0 || transform.localPosition.z >= terrain.height) { timeToChangeMoveDirection = changeInterval; moveDirection.z *= -1; } } this.search(); } else { Vector3 dir = target.transform.localPosition - transform.localPosition; dir.y = 0; this.attackObject(target, dir.normalized, dir.sqrMagnitude); } }
public void CreateBuildings(PATileTerrain tileTerrain) { return; RandomManager.instance.SetSeed(tileTerrain.settings.GetCrystalBuilding(tile.id).randomSeed); PATileTerrainChunk chunk = tileTerrain.GetChunk(tile.chunkId); foreach (var point in vPoints) { if (point.closeTile == null) { point.closeTile = GetTileByPoint(tileTerrain, point.transform); } if (point.closeTile == null) { continue; } //Debug.Log("pointTile.x " + pointTile.x + " pointTile.y " + pointTile.y + " point " + point.transform); if (point.virtualPointType != VirtualPoint.VirtualPointType.Building) { continue; } if (!point.CheckAreaType(tileTerrain)) { if (point.building != null) { buildings.Remove(point.building); point.RemoveBuilding(); } } else { if (point.building == null) { Transform building = point.CreateBuilding(chunk.settings.decoratesRoot); if (building != null) { HatchBuilding hatchBuilding = building.GetComponent <HatchBuilding>(); if (hatchBuilding != null) { hatchBuilding.hatchId = tile.id; this.hatch = hatchBuilding; } buildings.Add(building); } } } } if (Application.isPlaying) { LocalNavMeshBuilder.instance.UpdateNavMesh(); } //foreach (var point in vPoints) //{ // if (point.virtualPointType != VirtualPoint.VirtualPointType.Animals) // continue; // if(point.building == null) // { // Transform building = point.CreateBuilding(chunk.settings.decoratesRoot); // if (building != null) // buildings.Add(building); // } //} }
//将没有完美融合的qtrtile设置成none public bool ProcessMixPerfect(PATileTerrain tileTerrain) { PATile[] nTiles = tileTerrain.GetNeighboringTilesNxN(this, 1); PATile leftBottomTile = nTiles[0]; PATile leftTile = nTiles[1]; PATile leftTopTile = nTiles[2]; PATile topTile = nTiles[3]; PATile rightTopTile = nTiles[4]; PATile rightTile = nTiles[5]; PATile rightBottomTile = nTiles[6]; PATile bottomTile = nTiles[7]; bool isPerfect = true; QtrTileElementType qte0 = GetQtrTileElementType(bottomTile, 1); QtrTileElementType qte1 = GetQtrTileElementType(leftBottomTile, 2); QtrTileElementType qte2 = GetQtrTileElementType(leftTile, 3); QtrTileElementType qte = qtrTiles[0]; if (qte == qte0 && qte == qte1 && qte == qte2) { } else { isPerfect = false; qtrTiles[0] = QtrTileElementType.None; } qte0 = GetQtrTileElementType(leftTile, 2); qte1 = GetQtrTileElementType(leftTopTile, 3); qte2 = GetQtrTileElementType(topTile, 0); qte = qtrTiles[1]; if (qte == qte0 && qte == qte1 && qte == qte2) { } else { isPerfect = false; qtrTiles[1] = QtrTileElementType.None; } qte0 = GetQtrTileElementType(topTile, 3); qte1 = GetQtrTileElementType(rightTopTile, 0); qte2 = GetQtrTileElementType(rightTile, 1); qte = qtrTiles[2]; if (qte == qte0 && qte == qte1 && qte == qte2) { } else { isPerfect = false; qtrTiles[2] = QtrTileElementType.None; } qte0 = GetQtrTileElementType(rightTile, 0); qte1 = GetQtrTileElementType(rightBottomTile, 1); qte2 = GetQtrTileElementType(bottomTile, 2); qte = qtrTiles[3]; if (qte == qte0 && qte == qte1 && qte == qte2) { } else { isPerfect = false; qtrTiles[3] = QtrTileElementType.None; } return(isPerfect); }
public void OnDisable() { menuToolbar = 0; selectedTile = null; tileTerrain = null; }
public void OnEnable() { tileTerrain = GetSelectedTerrain(); if (tileTerrain.settings.chunks != null) foreach (PATileTerrainChunk c in tileTerrain.settings.chunks) { EditorUtility.SetSelectedWireframeHidden(c.gameObject.renderer, true); } tileTerrain.HideInUnity(); }