概要
2Dゲームを作るにあたって時間削減のためにTinyCharacterControllerを使用できないかなと思い、試してみました。
環境
- Unity 6000.0.23f1
- TinyCharacterController 0.7.0
実装
とりあえずそのまま使用してみた
TCCは3Dモデルを前提に作られているのでMoveControl
1などでキャラクターを移動させると移動方向にキャラクターのZ軸が向くようになっているので、Spineだとペーパーマリオみたいになってしまいます。なのでこの回転を司ってる部分を止めて、Spineの向きを変える処理を独自に実装する必要があります。
回転を司ってる部分
回転をさせる必要があるコンポーネントにはITurn
というインターフェイス実装させており、CharacterBrain
と同じGameObject
に追加されてるTCCのコンポーネントに実装されてるITurn
をすべて取得、毎フレーム回転量をTurnManager
で計算してキャラクターに反映してます。
改修
TCCは自前で新たに実装できるようなってるので、TCCのコンポーネントからITurn
、IPriorityLifecycle<ITurn>
を抜いた新たなコンポーネントを実装します。
これで回転しなくなるので、自前でSpineの向きを変えます。
Spine公式だとSpineのクラスのSkeleton
のScaleXを1か-1にして向きを変えてたのでそうしました。
_skeletonMecanim.skeleton.ScaleX = isLeftDirection ? 1: -1;
その他TCCについて
CharacterBrain
がUnityのCharacterControllerを継承しているので物理関係や当たり判定などは3Dを使用していて2D向けのColider2Dでは使用できません。
基礎的なことは一通りできますが、細かいことやろうとしたら自分で実装しないといけないので本格的なもの作りたいなら参考程度にして自前でキャラクターコントローラー実装したほうがいいかもしれません。
-
入力に応じてキャラクターを移動させるコンポーネント ↩