UNITY LINK

建物解体用の鉄球

UnityLinkを使う際の基本原則.

この最初のプロジェクトでは,シーン,ゲームオブジェクト,コンポーネント,プレハブ,物理を使う原則の多くを示す簡単なシミュレーションゲームを作成する.

プロジェクト設定

UnityLinkパッケージをロードすることから始める:

次に,ホームディレクトリにWreckingBall(建物解体用の鉄球)という名前の新規プロジェクトを作成する:

  • デフォルトでは,UnityOpenに渡されるプロジェクトパスは$HomeDirectoryに相対的なものである.しかし, UnityOpenに絶対パスを使うこともできる.

プロジェクトを整理しておくために使うアセットディレクトリを5つ作成する:

  • 標準ファイルシステム関数を使ってAssetsディレクトリ内にディレクトリやファイルを作成することは可能であるが,Unityのアセット関数を使う方が望ましい.これらの関数を使うと,ファイルやディレクトリに行った変更をUnityのアセットデータベースが正しく追跡して,状況に応じて適切に応答してくれるからである.
  • 新規のシーンを作成し,それをScenesディレクトリに保存する:

  • Unityの作成関数では,StringsとFileのオブジェクトの両方が使える.Stringが与えられた場合には,作成されたオブジェクト(メッシュ,マテリアル,ゲームオブジェクト等)は,シーンの作業コピーにだけ保存される.このオブジェクトをAssetsディレクトリに保存するためには,Assetsディレクトリに相対的なパスを持つFileオブジェクトを与える必要がある.Assetsディレクトリのパスは$UnityAssetsDirectoryで与えられる.
  • 画像からテクスチャアセットを3つ作成し,それをTexturesディレクトリに保存する:

  • テクスチャは,Assetsディレクトリに保存して,ゲームの構築後にスタンドアロンのアプリケーションで使えるようにする.アセットは,複数のシーン間で共有できるようにするためには,Assetsディレクトリに保存しなければならない.ただし,ここではこれは不要である.
  • それぞれのテクスチャに対して1つずつ,合計で3つのマテリアルを作成し,それらをMaterialsディレクトリに保存する:

  • テクスチャを直接シーンのオブジェクトに適用することはできない.代りに,テクスチャへの参照を含むマテリアルが使われる.マテリアルは,その他のデータ(色,シェーダー,法線マップ等)を保存し,参照することもできる.
  • シーンの設定

    原点を中心とする,20x20単位の大きさの四角いステージを作成する:

    • UnityLinkには,Unityのどのメッシュプリミティブ(平面,キューブ,球,円柱,カプセル,クワッド)でも作成できる関数が含まれる.

    cautionMaterialをステージのゲームオブジェクトに割り当てる:

  • ゲームオブジェクトのマテリアルは,MaterialSharedMaterialのプロパティーのどちらを使って設定してもよい.ただし,Materialはランタイムでのみ使われるべきである.エディターが実行されていないときに使うと,メモリリークが起るからである.
  • Boxという名前のUnityのキューブを作成し,そのマテリアルをBoxマテリアルに割り当てる:

  • プロパティーは,Propertiesオプションを使って,Unityの作成関数内で直接割り当てることができる.
  • リジッドボディのコンポーネントをボックスに加える:

  • リジッドボディのコンポーネントは,重力,衝突力等の力を適用したときにオブジェクトが動けるようにする.
  • ボックスからプレハブを作成し,それをPrefabsディレクトリに保存する:

  • ゲームオブジェクトがAssetsディレクトリに保存されると,これはプレハブと呼ばれる.プレハブは1つのシーン中に,および複数のシーン間で,何度もインスタンスを作成してもよい.それぞれのインスタンスは,もとのプレハブを参照するので,将来のどのような変更も簡単に伝えることができる.
  • もとのボックスオブジェクトはもはや必要ないので削除する:

    壁を形成するボックスの位置を得る:

    空のゲームオブジェクトを作成して,すべての壁ボックスの親とする:

    それぞれの位置にボックスのインスタンスを作成し,それを壁オブジェクトの子とする:

    Unityの球のプリミティブを作成し,それを解体用の鉄球とする:

    ヒンジのコンポーネントを鉄球に取り付け,その固定点を壁の上に設定する:

  • HingeJointのコンポーネントは,取り付けられたオブジェクトが何らかの固定点でヒンジに取り付けられているように作動するように制約を付ける.
  • ボールの質量を増やし,より大きな力を与える:

    鉄球から固定点までを繋ぐ棒を作成する:

    マテリアルをボールに割り当てる:

    シミュレーションを開始する:

    シミュレーションを停止する:

    追加的な変更

    カメラを動かして,壁がよりよく見えるようにする:

    UnityCameraImageを使って,メインのカメラの視界を得る:

    壁の親オブジェクトを検索する:

    壁を重複させて,より厚い層を加える:

    もとの壁オブジェクトを削除する:

    シミュレーションを開始し,即時にそれを一時停止する:

    最初のフレームを得る:

    フレームを100個進めて,鉄球が最初にボックスに当たったときにする:

    シミュレーションを終了する:

    最後のフレームを得る:

    シミュレーションを停止する:

    シーンを保存する: