スクリーンショットを見た感じ特に問題はなさそうですね・・・
張っていただいたスクリーンショットからは判断できないのでもし間違っていたら申し訳ないですが、
ほかのスクリプトなどで「移動処理中ならAnimatorのrunをtrueにする」ような処理が入っている場合も当然ながら上手く動作しないため、そちらも確認していただければと思います。
もしそういった処理がある場合はStateBehaviourを自作して移動処理を無効にする処理を追加しなければなりません。
ちなみに、コンポーネントそのものを無効にしても大丈夫であればSendEventGameObjectが使えます。
SendEventGameObject
OnStateBegin()の+ボタンを押してイベントを追加し、GameObjectを設定、Functionを無効にしたいコンポーネントのenabledを指定してチェックは付けないでいると該当ステートに遷移した瞬間にコンポーネントが無効になります。
他のステートに遷移した際に有効にしたい場合は有効にしたいステートにもSendEventGameObjectを追加しenabledのチェックを付ければ再び有効になります。
ひとまず今回の件については以上になります。ご確認よろしくお願いします。
最後に補足として、開始ステートや常駐ステートの使いどころについて簡単にですがまとめてみました。
よろしければこちらもご覧ください。
■開始ステート
ゲーム開始時やArborFSMが付いたオブジェクトが生成されたタイミングで一番最初に開始されるステートです。
いわばステートマシンの入り口的なステートになります。
たとえばモンスターが発生した時はよく発生モーションなどが再生されますが、その発生モーションの再生&終了待ちなどを開始ステートで処理するのが適しています。
特に発生モーションなどがない場合でも、一番初めにどういった状態かが重要です。
モンスターを例にすると最初はプレイヤーが近づくまで待機するんでしたら、近づいたら遷移する処理を開始ステートで行うようにします。
今回の場合ですと、開始ステートがCalcAnimatorParameterを処理するようになっていますが、特に開始時にAnimatorのrunを設定する必要がないのでしたら若干無駄な処理になってしまいますので、今一度、開始時がどういう状態かの見直しをしたほうがよいかもしれません。
■常駐ステート
通常のステートの遷移状況によらず、常に処理されつづける特殊なステートです。
たとえば、モンスターの現在ステート(巡回中や攻撃中など、いま行っている状態)に関係なく、HPが0になったら死亡モーションを再生して消したい場合があったとします。
この場合は、HPが0になったかどうかで遷移する常駐ステートを作成して死亡ステートに遷移、死亡ステートでは死亡モーション再生などの処理を行う。というのが適しているかと思います。
このように常駐ステートからの遷移を用いないと、巡回ステートでもHPチェック、攻撃ステートでもHPチェック、とすべてのステートに同じ処理を追加しないといけないため管理が大変になってしまいます。
そんな時に共通の遷移条件を常駐ステートにまとめておけるのが一番の使いどころです。
今回の場合ですと、ステートが2つしかないため特に常駐ステートでも問題ありませんが、後々他のステートが増えた時にもしcubeに触れても強制遷移させたくなく特定の状態の時のみ(例えば移動中の時のみなど)に遷移するのでしたら、
常駐ステートにせず普通のステートにOnCollisionEnterTransitionを付けてrunステートへ遷移する、という形でもよいかと思います。
また、現状の2ステートでいうと開始時はcubeに触れるまで待機するということでしたら、OnCollisionEnterTransitionのステートを開始ステートにするのが適しているということになります。
長くなってしまいましたが以上です、何かの参考になれば幸いです。