virtual public void StartNewAction() { float shouldMoveConfidence = 0; float shouldAttackConfidence = 0; if (movementBehaviour) { shouldMoveConfidence = movementBehaviour.ShouldMove(); } if (attackBehaviour) { shouldAttackConfidence = attackBehaviour.ShouldAttack(); } if (shouldMoveConfidence == 0 && shouldAttackConfidence == 0) { return; } float totalConfidence = shouldMoveConfidence + shouldAttackConfidence; float random = UnityEngine.Random.Range(0, totalConfidence); if (random < shouldMoveConfidence) { movementBehaviour.Move(); } else { attackBehaviour.Attack(); } }