デジタルな日々

2.5Dユニティちゃんを作る


 

ユニティちゃん2Dを改造して、2Dのユニティちゃんちゃんが3D空間を歩き回れるようにしました。

 

イメージとしてはペーパーマリオシリーズみたいな感じですね。

 

2.5DUnityChan

 

ユニティちゃん2Dのアセットはここからダウンロード↓

UNITY-CHAN! OFFICIAL WEBSITE

 

この中の「UnityChan2DController.cs」と「UnityChan2D(アニメーター)」をちょろっと書き換えただけです。

 

変えたところ

 

UnityChan2DController.cs

 

コピーして名前変更 → 「UnityChan25DController.cs」

 

・RequreComponentのRigidBody2DとBoxCllider2DをRigidBodyとBoxClliderに変更

 

 

・スクリプト内のRigidBody2DとBoxCllider2DをRigidBodyとBoxClliderに変更

RigidBody2D.gravityScaleを使っている箇所はRigidBody.Massにして値を修正

fixedAngleは削除

BoxCollider.centerはVector3になおしておく

他の2Dコンポーネント使用箇所も修正

 

・移動

新たに奥行きの値「z」を追加

Moveメソッドも変更

 

アニメーターのVerticalがz軸のと被ってわかりにくいと思ってHeightに変更したけど別にしなくてもよかったかもしれない…

 

・地面への接地判定

地面との衝突判定を大幅変更

FixedUpdateは何も処理させずに、OnCollision系を使う

一応元のコードがレイヤーで地面を判断していたのでレイヤーを使う(タグのほうがわかりやすかったかも)。

レイヤーのインデックス8番が「Ground」にあたる

 

 

 

 

インスペクターでの設定

あとはインスペクター上で設定します。

アニメーターはファイルをコピーして名前を変えてインポートしなおしてから修正しました。

・UnityChan2D

ユニティちゃん2.5Dインスペクタ

RigidBody2DとBoxCllider2DをRigidBodyとBoxClliderに変更します。

RigidBodoyのFreezeRotationに全てチェックを入れておきます、そうしないとペラペラなので倒れてしまいます(それもまた演出としてはありかもw)

 

・Ground

2Dで床として使われていたGroundは3DオブジェクトのCubeで作りました

無駄にでかい

ユニティちゃん2.5DGround

 

レイヤーをGroundに設定、BoxColliderをつけておきます

ユニティちゃん2.5DGroundインスペクタ

 

 

これでとりあえず動くと思います。

 

2Dデモの敵キャラ(Uni)を入れたい場合はSphereColliderとかに変更してIsTriggerにチェックを入れるとちゃんとダメージ受けます。

 

ダメージののけぞりとかジャンプの力とかを微調整するとより良いかと思います。

 

 

コメントを残す