seriruの技術屋ブログ

競技プログラミングやゲーム開発など技術に関することを発信します

Unityお勉強2日目

2日目です。 現在以下の参考書をやり直しています。

www.sbcr.jp

以前、一通り読んでいたため今回は6章と7章を学習し直しました。 以下勉強したワードを(雑に)アウトプットしていきます。

シーン

シーンとはUnityにおけるゲーム場面のくくりのことです。プロジェクト内に .unity という拡張子で保存されており中身は YAML で記述されています。

%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!29 &1
OcclusionCullingSettings:
  m_ObjectHideFlags: 0
  serializedVersion: 2
  m_OcclusionBakeSettings:
    smallestOccluder: 5
    smallestHole: 0.25

// ... // 

完成したシーンから他のシーンへの遷移には SceneManager.LoadScene("...Scene") というメソッドを使用します。 また、LoadScene メソッドからシーンを読み込むには BulidSetting でシーンを登録する必要があります。

f:id:ryo_seriru:20190807231854p:plain

Physics

Physics はUnityに標準で付属している物理エンジンです。これを使用することでゲームオブジェクトに対して物理挙動を比較的容易に実装することができます。

Rigidbodyコンポーネント

Rigidbody(剛体)コンポーネントは力の計算を担当します。 Rigidbodyではオブジェクトのtransferを変更するのではなく、Rigidbodyに力を加えることによって位置を移動させます。また、Rigidbodyだけでは別のオブジェクトと衝突したときに反応することができません。そのため、衝突判定のために Collider という専用のコンポーネントが存在します。

Colliderコンポーネント

Collider コンポーネントは衝突を行うためのコンポーネントです。Box ColliderCircle Collider などの様々なコンポーネントを組み合わせて衝突判定を与えたいオブジェクトにfitする形の判定を作ることが可能になります。

AddForceメソッド

Rigidbody コンポーネントを動かしたいときには、直接transferをいじらず AddForce などのメソッドを使ってオブジェクトに対して力を加えます。

// 例
GameObject rigid = GetComponent<Rigidbody>();
rigid.AddForce(transform.up * 10.0f);

当たり判定の検出

Physics を使った当たり判定には、CollisionTriggerという2つのモードがあります。Collision は衝突検知だけではなく跳ね返りなども計算します。一方で Trigger は当たったことのみを検知し知らせます。

Prefab

プレハブは同じオブジェクトを複製するために使用される仕組みです。ヒエラルキータブからプロジェクトウィンドウにプレハブにしたいオブジェクトを移動することで作ることができます。

Prefabのジェネレート

プレハブのスクリプトヒエラルキーに作った空のオブジェクトにアタッチすることで適用されます。 以下、プレハブのインスタンスを作るまでのスクリプト

public GameObject gamePrefab;

GameObject prefab = Instantiate(Prefab) as GameObject; // cast
//  その他処理