SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

速習 Unity 2Dゲーム開発

速習 Unity 2Dゲーム開発
~第8回 ゲームの調整

速習 Unity 2Dゲーム開発 第8回

  • X ポスト
  • このエントリーをはてなブックマークに追加

衝突判定範囲の修正

 キャラクターのジャンプを試していると、キャラクターが床に触れていないのにもかかわらず、何かにぶつかっているかのように移動できなくなったり。床が切れているの宙に浮いているようにキャラクターが落下しない現象が確認できます。

キャラクターが宙に浮いている
キャラクターが宙に浮いている

 これはキャラクターの衝突判定範囲が想定以上に広いために意図しない動きをしてしまっているためです。

衝突判定範囲の確認

 キャラクターの衝突判定範囲はHierarchyウィンドウでキャラクター確認した状態でSceneウィンドウで確認できます。

キャラクターの衝突判定範囲
キャラクターの衝突判定範囲

 キャラクターの周囲に見える緑色の枠が衝突判定の範囲です。

 キャラクターをはみ出てかなり広範囲に設定されているのが分かります。

衝突判定範囲の修正

 衝突判定範囲はInspectorウィンドウのBox Collider 2DのSizeを変更することで修正することができます。

 SizeのXの値を1に変更します。

Sizeの値を変更
Sizeの値を変更

 Sceneウィンドウの衝突判定範囲(緑色の枠)が以下のように変更されました。

変更された衝突判定範囲
変更された衝突判定範囲

移動速度やジャンプ速度などの調整

 ジャンプをした際のキャラクターの動きがフワッと移動してゲームとしてはちょっともっさりした感じがします。

 キャラクターがすばやく動くように重力のかかり方やキャラクターの重さを変更することで調整します。

重力の修正

 重力やキャラクターの重さを変更するにはInspectorウィンドウのRigidbody 2Dを変更します。

 キャラクターが重力の影響を強く受けるようにキャラクターの重さ(Mass)を0.5に、重力の強さ(Gravity Scale)を4に変更します。

Rigidbody 2Dの変更
Rigidbody 2Dの変更

キャラクターに加わる力の修正

 プログラムを修正してキャラクター操作時に加わる力も調整します。GameManager.csのUpdateメソッドを以下のように修正します。

移動時に加える力の調整
// 左右の移動にかかる力
private float _horizontalForce = 15f;

// ジャンプ時にかかる力
private float _upForce = 800f;

// Update is called once per frame
void Update () {

    // 左右のキーで左右に移動
    float horizontal = Input.GetAxis("Horizontal");

    // キー入力がありジャンプ中でない場合は左右に移動
    if (horizontal != 0.0f && this._charactorScript.isJumping == false)
    {
        this._moveCharactor(Vector2.right * _horizontalForce * horizontal);
    }
    // スペースキーでジャンプ
    // ジャンプ中はスペースキーが押されてもさらに上昇しない
    if (Input.GetKeyDown("space") && this._charactorScript.isJumping == false)
    {
        this._moveCharactor(Vector2.up * _upForce);
    }
}

 今回調整した値はゲームのバランスを調整しながら、好みの値に変更してみてください。

次のページ
Hierarchyウィンドウ、Projectウィンドウの整理

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
速習 Unity 2Dゲーム開発連載記事一覧

もっと読む

この記事の著者

西村 誠(ニシムラ マコト)

 Microsoft MVP Windows Platform Development。 Flash、PHPの開発経験もあり国産ECサイト構築フレームワーク「EC-CUBE」の公式エバンジェリストでもある。 ブログ:眠るシーラカンスと水底のプログラマー 著書:基礎から学ぶ Windowsストアアプリ開発

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/8137 2014/12/01 14:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング