using System.Collections; using System.Collections.Generic; using UnityEngine; public class Ant : MonoBehaviour { // Start is called before the first frame update public bool hasFood = false; public sbyte foodSearch = -1; // 1 it has food, -1 it searches for food public VoxelSpace voxelSpace; public void sniff() { //zadanie 2.3 if (voxelSpace.getPheromoneAt(transform.position.x, transform.position.z) > 250) { hasFood = true; foodSearch = 1; } else if (voxelSpace.positionInVoxelSpace(transform.position) == new Vector3Int(0,0,0)) { hasFood = false; foodSearch = -1; } else if (voxelSpace.positionInVoxelSpace(transform.position).x == voxelSpace.sizeX - 1 || voxelSpace.positionInVoxelSpace(transform.position).z == voxelSpace.sizeY - 1) { foodSearch = 1; } var pos = voxelSpace.positionInVoxelSpace(transform.position); if ((foodSearch == -1 && pos.x < voxelSpace.voxels.GetLength(0) -1 && pos.z < voxelSpace.voxels.GetLength(1) -1 && voxelSpace.voxels[pos.x+1, pos.z] == voxelSpace.voxels[pos.x, pos.z+1]) || (foodSearch == 1 && pos.x > 0 && pos.z > 0 && voxelSpace.voxels[pos.x-1, pos.z] == voxelSpace.voxels[pos.x, pos.z-1])) { var random = new System.Random(); var next = random.Next(0, 1); if (next == 0) { turnHorizontaly(); } else { turnVerticaly(); } } else if ((foodSearch == -1 && pos.x < voxelSpace.voxels.GetLength(0) -1 && pos.z < voxelSpace.voxels.GetLength(1) -1 && voxelSpace.voxels[pos.x+1, pos.z] > voxelSpace.voxels[pos.x, pos.z+1]) || (foodSearch == 1 && pos.x > 0 && pos.z > 0 && voxelSpace.voxels[pos.x-1, pos.z] < voxelSpace.voxels[pos.x, pos.z-1])) { turnVerticaly(); } else if ((foodSearch == -1 && pos.x < voxelSpace.voxels.GetLength(0) -1 && pos.z < voxelSpace.voxels.GetLength(1) -1 && voxelSpace.voxels[pos.x+1, pos.z] < voxelSpace.voxels[pos.x, pos.z+1]) || (foodSearch == 1 && pos.x > 0 && pos.z > 0 && voxelSpace.voxels[pos.x-1, pos.z] > voxelSpace.voxels[pos.x, pos.z-1])) { turnVerticaly(); } if (hasFood) { voxelSpace.voxels[pos.x, pos.z] = (byte)(voxelSpace.voxels[pos.x, pos.z] + 40); } go(); } void turnVerticaly() // /\ \/ { gameObject.transform.rotation = Quaternion.Euler(0, 90 * (foodSearch * -1.0f) - 90, 0); } void turnHorizontaly() // <--> { gameObject.transform.rotation = Quaternion.Euler(0, 90 * (foodSearch * -1.0f), 0); } public void go() { gameObject.transform.position += gameObject.transform.forward * (1.0f / voxelSpace.animationFrames); } }