furuya開発メモTweetこんにちは!布浦です。Unity2D企画、6回目です。キー操作によるキャラクターの移動を実装する(Physics2Dスクリプト編その2)」をやっていきたいと思います。物理演算による衝突判定などの動きと噛み合なくなります。不自然な動きになったり、当たり抜けが発生したりします。pos;}物理演算で本来壁に衝突するところを、無理にプログラムで座標を動かすとめり込んだりするそこで使うのが、AddForceという関数です。物理演算が適用されている物体に対して、力を加えることができます。「キャラクターに右方向の力を加える」というコードは以下のようになります。力を加えた結果の動きは物理シミュレーションによるものなので、カベなどとの衝突判定も動きます。10);}壁で止まるUpdateとFixedUpdateUnityでは、描画の更新が行われるUpdateと、物理シミュレーションの更新が行われるFixedUpdateという2つのUpdate関数があります。AddForceのように、物理シミュレーションによる物体の動きに作用するような処理はFixedUpdate関数内に書きます。/*物理演算による物体の動きに作用するような処理*/}矢印キーの入力を取得する今回は、矢印キーによる移動(左右キーで移動、上キーで飛ぶ)を実装します。いう関数で取得できます。縦方向と横方向の入力に対して、-1~1という扱いやすい数値で取得できるので、これをつかって、力を加える方向をコントロールします。Kotori.csに、下記のコードを追記します。}}何もキーを押してない状態では、Input.GetAxisが0を返すので、何も力を加えないということになります。物理シミュレーションなので、急に停止するのではなく、デフォルトで設定されている摩擦によって減速して止まります。自然な動きが少ないコードで実装できるので便利です。再生して、動かせるか確認しましょう。画面上を動き回れるようになったことり速度に上限を設定するキャラクターがキー操作に合わせて動くようになりました。自然な動きになるように工夫したいと思います。力を加え続けることになるので、物体はどんどん加速します。上限なく加速し続けると操作しづらくなってしまいます。velocityを出力してみると、速度が上がり続けるのがわかるこれを解決するために、制限速度をつくります。制限速度を超えているときは速度を制限速度に合わせるこの2つの処理を追加したコードが以下です。各種パラメータは、GUI上で調整できるようにしました。くる操作感になるように、調節してみてください。}}進む方向に合わせてSpriteを反転するキャラクターは、色々な方向に動けるようになりました。右に進んでいるときは右、左を進んでいるときは左を向くようにします。scale値が適用されるので、localScale.xを移動方向に合わせて変更します。}}再生して、操作してみましょう!移動方向に合わせて、向きが切り替わるはずです。あとは、適当にCubeなどを置いて、ステージをつくってみてください。3Dもそういえば今回、ちょっと手抜きをして壁などをCubeでつくりましたが、カメラを切り替えると・・・あっという間に、ステージだけ3Dに!これはこれで、いいかも。(背景色は、Cameraの「Background」というプロパティで変えられます。)Unityの2Dは、3Dとコードの違いもあまりなく、2つを簡単に混ぜることができるので、色々な表現が考えられて楽しいです。記事は全6回と結構多くなってしまいましたが、コード自体は少ないので、ここまで、慣れれば2〜3時間程度でできてしまうと思います。サンプルのプロジェクトはこちらからダウンロードできます。今回のサンプルはAssetStoreで公式で配布されているチュートリアルプロジェクト「2DPlatformer」を参考に制作しました。一般的なジャンプの処理など(ことりは飛べるようにしてしまったので・・・)をつくりたい、という方は参考にしてみてください。2Dのワークフローを紹介している、こちらも公式の、動画もあります。(日本語字幕つき!)2DPlatformer年明けから、Unity講座第5期が開講されます。「書籍やWeb上の情報だけではわからないことが多い」「1からしっかり勉強したい」という方におすすめです。for:クスールはWebの技術を中心に「ものづくり」を学ぶ、小さな学校です。メモ6月5日スタート「ほんきでHTML」受講生募集中です。