Unity5の教科書4日目

どうも。みりんです。

実は3日目の内容に取り組んだ後、余裕が出来たので、5章に取り組みました。

学習内容

  • ゲーム作りの流れ
  • あたり判定
  • prefabとジェネレータスクリプト

◇ゲーム作りの流れ

5章では以下のような流れでゲーム作成をしました。大まかな流れは実際にゲームを自作する際も変わらないと思いますので、少しずつ慣れていきたいです。

プロジェクトの作成→プレイヤーの移動→矢の移動→あたり判定→工場の作成→監督の作成


・ GetKey関数:GetMouseButton関数に似た関数。引数を任意のボタン(画面上の矢印ボタンなど)にしておくことで、そのボタンの入力によっブール代数(trueなど)を返す。-up、-downも存在する。

矢印の動作はUnityのPhysicsコンポーネントを使うことで、重力計算などを行ってくれ、スプリクトを書かなくても、矢を下方向に移動させることが可能です。
しかし、デフォルメした動作など、独自の動作を組み込むことが難しくなるため、本のほうでは使用していませんでした。

Destroy関数:引数に渡したオブジェクトの破棄を行う関数。
gameObject変数:自分自身を指す変数。変数として「gameObject」を渡すと、オブジェクトとして自分自身を渡すこととなる。

◇あたり判定
あたり判定には、衝突を検知する部分(衝突判定)と衝突を検知した後の動きを決める部分(衝突応答)が存在し、両者をまとめてあたり判定と考えています。

・あたり判定のアルゴリズム
厳密なあたり判定はオブジェクトの輪郭線が接しているかを見ないといけないが、計算が膨大となる。
簡単なあたり判定として、オブジェクトの形状を単純に円形で近似する。
判定範囲を中心座標と半径を使ってあたり判定をする方法を考える。

あたり判定については、たしか、Unityではあたり判定の範囲をメッシュ?で決めることが出来た気がします。

というのも、1日目で紹介しているUbemyの無料Unity講座では、3Dのボールゲームを作成する際に、メッシュであたり判定を定義したような気がします。

衝突判定をする際には、メッシュで当たり判定の範囲を決定する方法もあると思いますので、その辺はもう少し勉強していきたいと思います。

magnitude : Vector2の持つメンバ変数。任意のベクトルの長さを求めることが出来る。 「ベクトル名.manitude」で長さを返す。

◇prefabとジェネレータスクリプト

prefab:インスタンスを量産する際の、インスタンスの設計図のこと。prefabをジェネレータスクリプトに渡すことで、prefab通りのインスタンスを量産してくれる。同じ物をいくつか作りたい場合にはprefabを使うことになる。

アウトレット接続:ジェネレータスクリプトにprefabを渡す際に便利な方法。具体的にはスクリプト内の変数に、オブジェクトの実態を代入(関連付け)できるようになる方法。

ジェネレータスクリプト内のprefabを表す変数にpublic指定市を付けて宣言しておく。→ヒエラルキービューのジェネレータスクリプトを選択すると、インスペクタ内にpublic宣言していた変数が表れているので、ここに目的のprefabをドラック&ドロップして代入。

Instantiate関数は「Object型」を返すが、受け取りたいのは「GameObject型」の場合、キャストと呼ばれる強制変換型変数を使って、無理やり目的の型に変換している。関数の後に as GameObjectと記載すれば、型を強制的にGameObjectに変えられる。

Prefabはかなり重要だと思うので、アウトレット接続も併せて覚えておきたいです。

あと、UIを制御するスクリプトも作成しました。基本的にはGetComponentで制御するUIを探して、スクリプトを書いていくって感じでした。

UI周り少し凝ったものを作成したりしたいので、少しずつ勉強して行きたいと思います。

そんな感じで、ゲームが完成しました。

今日は、6章からいけるところまでチャレンジしてみたいと思います。

でき次第投稿しようと思います。

ありがとうございました。それではまた。

コメントを残す

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