Just another m1starグループ site

休学から始めるプログラミング

google ページ単位広告


google トラッキング



google ad ヘッダー




google ad 投稿記事




Unity

【Unityチュートリアル】玉転がし-Roll A Ball- その2

投稿日:


三星です。
前回の続きです。

1 このチュートリアルで出来るようになること
プレイヤーを動かして、アイテムをゲットして、ゲームをクリアする!
この一連を学べます。

さらにさらに自分自身でコードを書いてスクリプトを追加する作業も体験できますので、敷居の高そうなコーディングも楽々です。
有料の本ももちろん良いですが、こちらのチュートリアルでUnityを体験してはどうでしょうか。なんと言っても無料ですから。

2 プロジェクトの作成
3 ステージを作成
4 プレイヤーの移動
4.1 コンポーネントとは
4.2 自作スクリプトをくっつける
4.3 必要なAPIを探す
4.4 数値の調整

ここまでの内容は前回を参照してください。

カメラを動かす

多くのゲームではプレイヤーの動きに合わせてカメラが動きますね?
それの実現方法がここでわかります。

最も容易なカメラを動かす方法は、カメラをPlayerの子オブジェクトに設定することです。

Unityではオブジェクトに関連付けてそのオブジェクトの子オブジェクトを生成できます。
子オブジェクトは親オブジェクトの相対座標となります。
したがって親オブジェクト(プレイヤー)が動くと子オブジェクト(カメラ)が動きます。

しかし今回の回転するボールの子にした場合このようにカメラも回転してしまいます。

解決するにはメインカメラにプレイヤーを追従するようなコンポーネント(スクリプト)を付与することです。

関数について
GetComponent は、他のコンポーネントにアクセスするための主力となる方法です。
Transform はオブジェクトの位置、回転、スケールを格納し、操作するために使用されます。 すべての Transform は親を持ち、階層的に位置、回転、スケールを適用することができます。コンポーネントです。

GetComponent《Transform》().positionでこれはTransformコンポーネントの中のPosition変数を指定しています。
target.positionで指定したオブジェクトのTransformのposition変数のことです。
右の変数の値を左の変数に代入しています。

これでカメラがプレイヤーを追従するようになりました。

次にカメラの相対位置を指定します。
最初に相対距離を計算し、Positionを代入するときに相対距離を足した値を代入するようにします。

private はpublic と違い他のスクリプトから参照されることはありません。
Start関数はコンポーネントの起動時に一度だけ起動する関数です。


これで完成です。

アイテム回収の追加



「ステージ上に大量に配置したアイテムにプレイヤーが接触したらアイテムが消える」といった機能を追加します。

  • 沢山配置出来る
    “Player”が接触したら反応する
    接触時アイテムが消える
  • アイテムを大量に複製するためにプレハブを利用します。

    アイテムとの接触判定にはOnTriggerEnter関数が使える。

    ただこれだけだと全てのオブジェクトとの接触で判定がオンになります。
    プレイヤーだけにしたいです。

    今回はタグを利用します。

    アイテムを消すためにはDestroyメソッドを使います。
    destroy()はゲームオブジェクトまたはコンポーネントを削除します。
    オブジェクトの場合、子オブジェクトも削除されます。



    ゲームのUIを追加する

    画面に文字を表示します。

    UIもオブジェクトです。画面に表示されるものは全てオブジェクトなのです。
    まずはCanvasを作成します。
    次にその子としてTextを作成します。
    これで文字を画面に表示できます。

    アイテムの個数をカウントします。
    アイテムにItemタグをつけてその数を数えます。
    どのオブジェクトがその役目を担うかというとGameControllerです。

    GameControllerに管理させる方法を採用します。またItem数のようなゲーム全体の進行に関する機能はGameControllerが持つのが望ましいです。 このGameControllerがItemの残数を数え、変更があれば通知する仕組みを持ちます。

    こういったゲーム進行の役割はゲームコントローラーに持たせるのがよくある手法です。

    ゲームのクリアを追加する

    最後にゲームのクリア条件を追加します。

    最後の機能は「ゲーム内のアイテムを全て回収したら「YOU WIN」の文字が表示される」機能です。
    この機能を実現する為の必要な要素を考えてみましょう。

  • ゲームクリアを表す文字
    アイテムが全てなくなった判定
  • クリア時のUIを作成。

    Textを利用して先ほどと同様。
    If分を使ってアイテムの個数が0になったらYOU WINと表示。

    Unityで描画されているものを非表示にする方法はいくつかありますが、今回はGameObjectを非アクティブにする事で非表示にします。

    障害物とリスタート

    ゲーム性を出すために障碍物を設置します。

    ぶつかってはいけない壁にぶつかったらゲームオーバー」のルールを追加します。

    要素を分解すると以下の要素を追加すれば良さそうです。

  • 「ぶつかってはいけない壁」の設定
    壁にぶつかった際のイベントを設定
    ぶつかった際にシーンを再ロードする
  • ぶつかってはいけない壁を作ります。
    これはオブジェクトのCubeを使います。Wallを作った時と変わりませんね。
    そしてこれも複数欲しいのでプレハブにします。

    次にアイテムの時と同様にコリジョン判定を追加します。
    ここまできたらシーンを再起動する機能を作るだけです。

    シーンをいじるためには
    using UnityEngine.SceneManagement;
    をスクリプトの上部に設置する必要があります。


    google ad 広告用スペース




    google ad 広告用スペース




    google ad 投稿記事




    -Unity

    Copyright© 休学から始めるプログラミング , 2019 All Rights Reserved Powered by STINGER.