void Start()
 {
     mainCameraTransform           = Camera.main.transform;
     playerTransform               = GameObject.FindWithTag("Player").transform;
     rikishiController             = GetComponent <RikishiController>();
     zeFlabben                     = GetComponent <ParameterizedFlabbiness>();
     scoreboard                    = FindObjectOfType <Scoreboard>();
     zeFlabben.Flabbiness          = scoreboard.GetPlayerScore() * 34f;
     rikishiController.shoveForce += zeFlabben.Flabbiness * 3;
 }
    void Start()
    {
        mainCameraTransform           = Camera.main.transform;
        playerTransform               = GameObject.FindWithTag("Player").transform;
        rikishiController             = GetComponent <RikishiController>();
        zeFlabben                     = GetComponent <ParameterizedFlabbiness>();
        scoreboard                    = FindObjectOfType <Scoreboard>();
        animator                      = GetComponent <Animator>();
        zeFlabben.Flabbiness          = scoreboard.GetEnemyScore() * 34f;
        rikishiController.shoveForce += zeFlabben.Flabbiness * 3;

        trackingTransform          = new GameObject().transform;
        trackingTransform.position = playerTransform.position;
        trackingTransformStartY    = trackingTransform.position.y;

        // BT class from the 2D Game Kit
        // https://learn.unity.com/tutorial/2d-game-kit-advanced-topics#5c7f8528edbc2a002053b77a
        //behaviorTree.OpenBranch(

        //    //BT.If(() => { return m_EnemyBehaviour.Target != null; }).OpenBranch(
        //    //    BT.Call(m_EnemyBehaviour.CheckTargetStillVisible),
        //    //    BT.Call(m_EnemyBehaviour.OrientToTarget),
        //    //    BT.Trigger(m_Animator, "Shooting"),
        //    //    BT.Call(m_EnemyBehaviour.RememberTargetPos),
        //    //    BT.WaitForAnimatorState(m_Animator, "Attack")
        //    //),

        //    BT.If(TestPlayerInStrikingDistance).OpenBranch(
        //        BT.Trigger(animator, "Stop Dancing"),
        //        BT.Call(Attack),
        //        BT.Wait(StrikeDelay)
        //    ),

        //    BT.Call(LockOntoTarget)
        //);

        behaviorTree.OpenBranch(
            BT.RandomSequence(new int[] { 3, 1 }).OpenBranch(
                BT.Sequence().OpenBranch(
                    //BT.Log("Chasing Player"),
                    BT.RunCoroutine(GetWithinStrikingDistanceOfThePlayer),
                    BT.Call(Attack),
                    BT.RunCoroutine(GetReadyForNextAttack)
                    ),
                BT.Sequence().OpenBranch(
                    BT.While(() => PlayerIsInStrikingDistance() == false).OpenBranch(
                        //BT.Log("Avoiding Player"),
                        BT.Call(() => ImOnTheEdgeOfTheDohyo()),
                        BT.Call(SitStill),
                        BT.Call(LockOntoTarget)
                        )
                    )
                )
            );
    }