【Unity】スーパーマリオメーカーに対抗してみた Part.2
- uniteen
- 2015年9月22日
- 読了時間: 3分
前回の続き。
今回は、Blend Treeを使ってのアニメーション設定
コードを使っての、プレイヤー移動実装
ここまで頑張ろうと思います。
【Blend Treeでのアニメーション設定】
方向のパラメータを設定

X軸とY軸について、定義しておきます。
今後の処理で、X軸方向にどのくらい進んだかで
向きを判定するためです。-なら左、+なら右ですね。
今回は左右なので、Y軸に対する定義は必要ないのですが、
せっかくなので入れます。ジャンプ時と、しゃがみ時のモーションも用意しました。



Blend Treeを設定

2D simple directionalを選択して、
XとYを登録

right,left,jump,stayに対して、方向を定義します。
rightなら、Xが+1の時にrightのモーションが入るようにします。
注意ですが、ジャンプのみの実装等、Y軸に+しか実装しないなどをすると
エラーが発生する可能性がありますので、必ず-+どっちのモーションも
追加してください。もししゃがみの実装予定がなければ、座標の登録だけしておいてください。
これでアニメーション変更についての基盤が整いました。
あとはコードで指定すれば、オッケーです。
【スクリプト】
using UnityEngine; using System.Collections; public class man_control : MonoBehaviour { protected Animator animator; private float directionX = 0; private float directionY = 0; private bool walking = false; public float walkingSpeed = 1f; public float jumpPower = 200; // Use this for initialization void Start () { animator = GetComponent<Animator> (); } void Update(){ if(animator) { float h = Input.GetAxisRaw("Horizontal"); float v = Input.GetAxisRaw("Vertical"); walking = true; if (h > 0) { directionX = 1; directionY = 0; } else if (h < 0) { directionX = -1; directionY = 0; } else if (v > 0) { directionX = 0; directionY = 1; } else if (v < 0) { directionX = 0; directionY = -1; } else { walking = false; }
//Horizontalで横移動、Verticalで縦移動を指示できます。
//hとvに移動時にパラメータを与え、それが0より大きいか小さいかで
//アニメーションのほうのXとYの定義に合わせます。 if (walking) { transform.Translate(new Vector3(directionX, directionY, 0) * Time.deltaTime * walkingSpeed); } animator.SetFloat("DirX", directionX); animator.SetFloat("DirY", directionY); animator.SetBool("Walking", walking); }
//Walkingをしている時、animatorからアニメーションをひっぱりだし
//画面上に反映させます。 } }
はい、とりあえずここまででキャラクターの基礎移動と、
移動時の基礎モーションが完成しました。
あとは、物理挙動と当たり判定をいれましょう。
RigitbodyにFixedAngleをいれるのを忘れないように。
いれないと、体勢が固定できず、キャラクターが倒れたりします。

あとは、しゃがみなどは位置が通常により低くなるので、
Positionに補正をかけてあげましょう。

今回は、Y軸にマイナスの補正をかけました。
これをしないと、空中に浮いてしまいます。(キャラクターの初期位置を
Bottomにすれば、底面で固定もできますので、そっちのほうがいいかも。)
ちゃんと動くようにするには、あともう少しいじらないといけない
項目がありますが、ここでは割愛します。
次回は、
ビームを出す。
死亡時の演出
ギミックの実装
などできたらと思います。
では。
Comments