自分流

なんちゃってエンジニアによる自分用メモ

ゲーム作り

Unityの2Dアクションでジャンプを作る

投稿日:

(こんにちは。かじです。

今ぼちぼち作っているゲームがあります。

チャリ走のようなエンドレス横スクロールジャンプアクションです!

今年中にリリースできれば。といった感じです。
その時がくればまた宣伝させてもらいますね^^

 

開発中の画面

現時点ではこんな感じです

以下の土台となる部分の機能は実装できています。(仮組ですが)

  • 強制スクロールでフィールドが流れる
  • 床がランダムで出てくる
  • 背景がゆっくりスクロールする
  • 進んだ距離によってスコアが加算される
  • 画面タップでジャンプ
  • 落ちたらゲームオーバー

ちょっと挙動不審な部分ありますが・・・

 

ジャンプ部分のソース

今日はジャンプ部分のお話をしましょう。

 

ジャンプ部分のソースがこれです。

(ほぼ和尚本。和尚本さまさまなのです)

 

 

Unity上の設定

Unityはソースの説明だけで済まないのがめんどくさいですね・・・orz

 

詳しくは書籍などを見ていただくとして、Unity上で以下のように設定します。

  • Playerゲームオブジェクトに「Rigidbody 2D」をAdd Component
  • Playerゲームオブジェクトに上記スクリプトをAdd Component
  • LayerにBlockを追加し、フィールド上のブロックオブジェクトのLayerを「Block」にする
  • PlayerゲームオブジェクトのPlayerManagerのBlockLayerに「Block」を設定する
  • UICanvasを用意し、Buttonを配置する
  • ButtonのColorのaを0にしてサイズを画面全体する(透明で画面どこを押してもボタンを押したことになる)
  • Buttonに「EventTrigger」をAdd Component
    • EventTriggerにAdd New Event Typeで「Pointer Down」を追加
    • EventTriggerにPlayerManagerを設定
    • EventTriggerにPlayerManager.PushJumpButtonを設定

上記の設定ができれば画面のどこを押してもジャンプすると思います。

 

ソースの解説

ジャンプボタンを押したら以下のメソッドが呼ばれます。

isGround(接地)の時、goJumpをTrueにする。

ただのフラグ管理ですね。

 

Updateで毎フレーム接地確認をし

 

FixedUpdateでUnityの物理演算で浮かしているわけです。

 

接地確認はPhysics2D.Linecastを使いました。

Physics2D.Linecast

Physics2D.Linecast(start, end, layerMask)

キャラの下ギリギリ(始点)から下に向けて光線を発して、終点までの間に指定したレイヤー(blockLayer)があるかどうかの判定。

このposition関係が目に見えなかったりするので、ちょっと苦労しました。

transform.position – transform.up * 1.0f の計算は
現在のpositionからtransform.up * 1.0f をひくことで、下ギリギリのVector2が得られます。

 

あとは、接地している時にボタンが押されるとgoJumpがTrueになるので、
FixedUpdateで上向きにAddForceで力をかけるわけですね。

 

 

まとめ

いかがでしたか?

ソースの解説が解説になっているか不安ですが、ジャンプの処理は案外簡単に実装できることがわかりました。

当たり判定、物理演算が簡単に実装できる。素敵な世の中ですね^^

 

書いてほしこと、間違い等ありましたらお教えください!

-ゲーム作り


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連記事

UnityとCocos2d-XとGameMaker Studioを比較してみた

スマホでゲームアプリを出そうと思ってます。 ゲームエンジンを使って楽しようと思うんだけど、ん?2Dゲームってどのゲームエンジンが良いんだっけ? というわけで、Unity、Cocos2d-X、GameM …

UnityでAndroidビルドが通らなくなった話「Exception: C:\Program Files\Unity\Editor\Data\il2cpp/build/il2cpp.exe did not run properly!」エラー

こんにちは。かじです。 最近コツコツとUnityで簡単なゲームを作っております。 android/iOSで公開するつもりですので、公開となったら宣伝させてもらいます。 また、作る上での小ネタもここで記 …

「Unityの寺子屋」読了

せっかく制作活動しよう。って思ってるんだしUnityでスマホアプリを作ろうかな。と画策中。 過去に仕事で何本かUnityでコンテンツを作成したことあるんですが、もう3年ぐらい前の話。 Unity4時代 …

Top