private bool IsTileOnFire(Vector3 position) { int layerMask = 1 << 9; // layer of map tile if (Physics.Raycast(position, Vector3.down, out RaycastHit hit, 3, layerMask)) { TileFire tileBelow = hit.collider.gameObject.GetComponentInParent <TileFire>(); if (tileBelow != null) //Make sure we are above tile { if (tileBelow.IsTileOnFire()) { return(true); } } } return(false); }
void FixedUpdate() { fireTickCounter--; if (fireTickCounter <= 0) { for (int i = 0; i < mapSizeX; i++) { for (int j = 0; j < mapSizeY; j++) { TileFire tileFire = map[i, j].GetComponent <TileFire>(); if (tileFire.IsTileOnFire()) { if (i > 0) { TileIgnition(i - 1, j); } if (i < mapSizeX - 1) { TileIgnition(i + 1, j); } if (j > 0) { TileIgnition(i, j - 1); } if (j < mapSizeY - 1) { TileIgnition(i, j + 1); } tileFire.fireDuration--; } } fireTickCounter = fireTickDelay; } } }
void Start() { tileFire = gameObject.GetComponent <TileFire>(); }