クリアメモリ

プログラミングやモーショングラフィックス、便利なアプリケーションなど雑多に記録するブログ

Unity プレイヤーを移動 ジャンプさせるスクリプト|Part2

f:id:clrmemory:20170422171631p:plain 

前回の記事で「プレイヤーの移動処理」を紹介しました。

 

そのコードの中で「GetComponent<RigidBody2D>().velocity」を使ったのですが、注意点もあるので説明していきます。

 

 

はじめに

 

前回の記事をまだ確認していない方は先に確認しておくとわかりやすいかもしれません。

 

前回の記事はこちら

 

https://clrmemory.com/unity/player-jamp-p1/

 

前回紹介したコードで注意点があったのが「velocity = new Vector3(X,Y,Z)」のなかのxyzの部分です。

では簡単に解説していきます。

 

velocityの注意点

 

GetComponent<RigidBody2D>().velocityを使う上で注意する点を説明します。

velocityは基本的に「プレイヤーなどのオブジェクトを移動させる」というような時に使います。

 

ただ左右に移動させるだけであれば、「GetComponent<RigidBody2D>().velocity = new Vector3(10, 0, 0);」にすれば良いのですが、左右移動だけというのはあまりありません。

 

前回の記事ではジャンプの処理を「GetComponent<RigidBody2D>().velocity = new Vector3(x, 100, y)」にしているので、左右とジャンプで両方ともvelocityを使っていました。

 

 

このコードのように「左右に移動しながらジャンプする」などの処理の場合、「new Vector3(10, 0, 0)」でyの値を0にしてしまっています。

すると左右の移動中にジャンプをした場合、せっかくyに100の値を入れたのにその直後に左右移動を呼び出しているので、yの値が0になってしまいます。

 

つまりジャンプ中にvelocityを0にしてしまうと、yにかけた力がなくなってしまうので結果的にジャンプが低くなってしまいます。

 

 

ではそのようにならないようにするためにはどのようにすれば良いか。前回のコードを見てみてください。

 

GetComponent().velocity = new Vector3(10, GetComponent<RigidBody2D>().velocity.y, 0);

 

のようにすることで、現在のvelocity.yを入れることができるので、例えジャンプでyの値が変わったとしてもvelocity.yが変わるだけなので、ジャンプの挙動は変わらないというわけです。

 

長くなりましたが、velocityを使う上での注意点は以上です。同じようにしてジャンプのコードにもvelocity.xを入れてあげてください。

 

オブジェクトを配置しよう

 

コードが完成しプレイヤーを動かす準備ができたので、実際にUnity上で配置していきましょう。

 

スクリーンショット 2016-03-02 13.33.33

 

必要になるのは「プレイヤーの画像」「足場」「カメラ」「前回のコード」だけです。

プレイヤーオブジェクトには「Collider2D」「RigidBody2D」「コード」を追加してください。同じように足場のオブジェクトにも「Collider2D」を追加しましょう。

プレイヤーの名前はコード内で指定した名前と同じものにしてください。

 

続いて「RigidBody2D」の数値を変更していきます。この値はジャンプ力、重力、オブジェクトのサイズなどによって変わってくるのですが、各自で調整してください。

 

スクリーンショット 2016-03-02 13.40.10

 

(先ほどのコードがアタッチされているのを確認しましょう)

 

コードのvelocityを変更するか、重力を強くするかしてジャンプ力を調整してください。

 

さらにこちらの記事で紹介している「カメラをプレイヤーと一緒に移動する」方法を使うことで、カメラ外にプレイヤーが出てしまう危険性は無くなります。試してみてください。

 

https://clrmemory.com/unity/camera-follow-player/

 

まとめ

 

今回の方法を使えば簡単にプレイヤーを移動させることができるようになりました。

velocityはアクションゲームを作る上で、重要なコードになるので使い方やコードの形式を覚えておくと後々楽になると思います。

 

この移動に合わせてアニメーションを再生することで、より走っているように見せることができると思います。ぜひ使ってみてください。

 

ではまた。