前回は忍者をジャンプさせることができたので
今回は左右に移動できるようにしたいと思います。
前回のスクリプトに追加していきます。
1.
MonoBehaviourの下に以下を記述。
float walkPow = 40.0f; //歩く力を設定。
float maxWSPD = 3.0f; //スピードの最大値を設定。
2.
Update関数内に以下を追加。
int key = 0; //キー状態を保存する変数keyを宣言
if (Input.GetKey(KeyCode.RightArrow))
{
key = 1; //右が押されたらkey=1
}
if (Input.GetKey(KeyCode.LeftArrow))
{
key = -1; //左が押されたらkey=-1
}
//歩くスピードを設定。
//Mathf.Abs()は絶対値を返す。
//velocityには速度が入っている。
//したがってWSPDには速度の絶対値が代入される。
float WSPD = Mathf.Abs(this.access2D.velocity.x);
//キーを離してもすぐに停止しないで慣性の法則でしばらくそのまま動いてしまうので
//キーを離したらすぐに停止する処理。
if (Input.GetKeyUp(KeyCode.RightArrow))
{
this.access2D.velocity = Vector2.zero; //停止させる命令
}
if (Input.GetKeyUp(KeyCode.LeftArrow))
{
this.access2D.velocity = Vector2.zero; //停止させる命令
}
if (WSPD < this.maxWSPD) //マックススピード以下なら移動を加速させる。
{
this.access2D.AddForce(transform.right * key * this.walkPow);
}
//動く方向にキャラが向くように画像を反転させる処理
if (key != 0)
{
transform.localScale = new Vector3(key, 1, 1);
}
3.
実行してみる。
縦横無尽に駆け巡る忍者。
ブロックに飛び乗ることもできるようになりました! ^0^
////////////////////////////////////////
ー広告ー