private void FixedUpdate() { if (Vector3.Angle(transform.up, Vector3.up) > 60f) { timeSinceToppled += Time.deltaTime; if (timeSinceToppled >= 2f) { UnTopple(); timeSinceToppled = 0f; } } else if (IsMoving()) { body.angularVelocity = Vector3.zero; body.velocity = Vector3.zero; } //desiredDir = (desiredDir + GetLevelledDir() * wandering + transform.forward * steering).normalized; //MoveTo(desiredDir.normalized, 5, 7); switch (brain.OrgState) { case OrganismState.IDLE: { desiredDir = (desiredDir + GetLevelledDir() * wandering + transform.forward * steering).normalized; MoveTo(desiredDir.normalized, walkSpeed, rotSpeed); break; } case OrganismState.CHASING_FOOD: { if (target != null) { desiredDir = (target.transform.position - transform.position); desiredDir.y = 0f; if (desiredDir.sqrMagnitude > (attackRange * attackRange)) { MoveTo(desiredDir.normalized, sprintSpeed, rotSpeed); } else { // Here the body has reached the attack range body.velocity = Vector3.zero; body.angularVelocity = Vector3.zero; brain.Velocity = Vector3.zero; brain.OnTargetInAttackRange(target); } } break; } case OrganismState.REST: { Debug.Log("REST State"); body.velocity = Vector3.zero; body.angularVelocity = Vector3.zero; break; } } }