もちろん、動かすだけではなくキャラクターにアニメーションもさせたいですね。
ということで、まずは動かすキャラクターとして、このような画像を用意しました。
Unityではこのように複数の絵を一つの画像にしても、それを切り分けて使うことができます。
画像をプロジェクトに追加して選択したら、InspectorのSprite Modeを「Multiple」にして「Sprite Editor」をクリックすると新しいウィンドウに画像が表示されるので、1つ分の画像を範囲選択するとそれに名前をつけて別の画像として扱えるようになります。
とりあえず、右向きの画像を3つほど切り出すととProjectにこんな感じで表示されます。
元画像の横の「三角」で切り出した画像を個別に選択することができますね。
この画像の一つをSpriteで表示して、適当に背景を置きます。
SpriteにはRigidbody 2D, Box Collider 2Dを追加し、キャラクターが落ちないように地面あたりにもBox Collider 2Dを追加します。
次にこの配置したキャラクターにアニメーションをつけます。
HierarchyでSpriteを選択してから、「Window→Animation」を選択してAnimation Viewを表示します。
Animation Viewの再生ボタンの下をクリックして[Create New Clip]で新しいアニメーションを作れます。
では、歩いているアニメーションを作ってみます。
画像をタイムライン上にドラッグ&ドロップで追加してパラパラ漫画の感じで作ります。
同じ要領で静止時のアニメ(止まっているだけ)も作っておきます。
続いて、作った「歩く」「静止」のアニメーションをMecanimという仕組みでコントロールします。
アニメーションをつけたSpriteを選択してから、「Window→Animator」でAnimator Viewを開きます。
Animator Viewには「Any State」の他に「歩く」「静止」の2つの箱があるはずです。
「歩く」の箱を右クリックして「Make Transition」を選択後に「静止」の箱に矢印を引っ張ります。
同じように「静止」から「歩く」にも矢印を引っ張ります。
次にParametersの横の「+」をクリックして「Bool」を選択して「New Bool」を「IsWalk」に変更します。
最後に「静止」から「歩く」の矢印を選択して、InspectorのConditionsにIsWalk,trueを追加します。
同じように「歩く」から「静止」にはIsWalk,falseを追加します。
後は、キャラクターを動かすスクリプトを書くだけです。
キャラクターのSpriteにスクリプトを追加して以下のようなコードを書きます。
#pragma strict
//方向(1:右、-1:左)
private var direction = 1;
function Update () {
var animator = GetComponent(Animator);
var h = Input.GetAxis("Horizontal");
var walkSpeed : float;
if (h < 0 || 0 < h) {
//左右キーが押された場合
walkSpeed = 10;
//歩くアニメをスタート
animator.SetBool("IsWalk", true);
} else {
walkSpeed = 0;
//静止アニメをスタート
animator.SetBool("IsWalk", false);
}
//横に移動
rigidbody2D.velocity = Vector2(h * walkSpeed, rigidbody2D.velocity.y);
//左右に反転する必要があるかどうか
if ((h < 0 && direction > 0) || (h > 0 && direction < 0)) {
//キャラクターを反転
transform.localScale.x *= -1;
//方向を反転
direction *= -1;
}
}
これで左右の方向キーでキャラクターが歩くようになりました!
Mecanimのあたりが少しややこしいですが、それでも割と直感的に作れると思います。
2Dは画像を用意するだけでゲームのキャラクターにできるので、見た目がオリジナルなゲームは作りやすいですね。
0 件のコメント:
コメントを投稿