// Update is called once per frame void Update() { float speedF = genes.speed / 6 + (genes.speed / 6) / 10; float senceF = genes.visionRaudis / 4 + (genes.visionRaudis / 4) / 10; Material newMat = new Material(Shader.Find("Standard")); newMat.CopyPropertiesFromMaterial(body.sharedMaterials[0]); Color SpeedColor = Color.Lerp(normal, speed, (speedF / 10) * genes.scale); Color SneceColor = Color.Lerp(normal, sence, (senceF / 10) * genes.scale); Color FinalColor = Color.Lerp(SneceColor, SpeedColor, 0.5f); newMat.color = FinalColor; body.material = newMat; if (energy <= 0) { Die(transform.name + " died form hunger"); } if (transform.position == homePos) { transform.rotation = homeRot; } float distance = Vector3.Distance(transform.position, targetPos); float distToCenter = Vector3.Distance(transform.position, Vector3.zero); if (distToCenter > enviroment.SpawnRange) { GetRandomPos(); } if (target != null) { targetPos = target.position; } if (dayGoing) { if (!enviroment.GetPossibleFood(this) && transform.position != homePos) { if (food <= 0) { Die(transform.name + " died form hunger"); } else { Move(homePos); } } if (food >= 2 || food == 1 && energy <= 0.5f && transform.position != homePos) { Move(homePos); } if (food < 2 && !(food == 1 && energy <= 0.5f)) { Move(targetPos); } if (distance <= 1 && target != null) { if (target.name == "Food(Clone)") { target.GetComponent <Food>().Eat(); target = null; food++; } else { Creature creature = target.GetComponent <Creature>(); if (creature.transform.position != creature.homePos) { Die(creature.transform.name + " was eaten by " + transform.name + ", a big boy"); target = null; food++; } } } if (distance <= 1 && target == null && food < 2) { GetRandomPos(); } float currentFoodDist = 100; foreach (var food in enviroment.allFood) { if (food != null) { float dist = Vector3.Distance(transform.position, food.transform.position); if (dist <= genes.visionRaudis && dist < currentFoodDist) { currentFoodDist = dist; target = food.transform; } } } currentFoodDist = 100; foreach (var Cret in enviroment.creatures) { if (Cret != null) { float dist = Vector3.Distance(transform.position, Cret.transform.position); if (dist <= genes.visionRaudis && dist < currentFoodDist && target == null && transform.localScale.y > (Cret.transform.localScale.y * 1.2f)) { if (Cret.transform.position != Cret.homePos) { currentFoodDist = dist; target = Cret.transform; } } } } } else { if (food >= 2) { Reperduse(); } food = 0; } }