LoginSignup
0
0

More than 1 year has passed since last update.

はじめてのUnity②

Posted at

チュートリアル実践memo

1.どのチュートリアルをやるのか?

Unity LeanというUnityの公式学習サイトで沢山のチュートリアルが用意されています。
今回私が試したのはこちら。初めて触る自分にとって基礎を学ぶには最適でした。

Unity入門チュートリアル 「玉転がし」(Roll-a-Ball) Bolt版

追伸
当時はありませんでしたが、現在はBolt版とVisual Scripting版がそれぞれ公開されているようです。
Unity入門チュートリアル 「玉転がし」(Roll-a-Ball) ビジュアルスクリプティング版

2.いざ実践

基本的にはガイドの通り進めていきます。以下、備忘録。

プロジェクト作成

始めてみると、いきなりガイダンスに掲載されている画面となんか違う。
チュートリアルのバージョンがUnity2019.4、私の環境はUnity Hub3.1.2となっており、バージョン差異によるもの。ここはなんとなく「新しいプロジェクト」ボタンからプロジェクトが作成できた。

エディタのレイアウトを統一する

プロジェクト作成が完了すると、エディタが開きます。
レイアウトはいくつか選べるみたいですね。好みでしょうか。
GameタブのAspectは4:3は選べず。16:9で進めます。

インターフェースの使い方

エディタの画面構成を学習することができました。私の中の理解を端的にまとめました。

  • シーン(Scene)ビュー
    作成したオブジェクトを視覚的に確認・操作ができる画面。

  • ゲーム(Game)ビュー
    利用者からみた画面。UI。

  • ヒエラルキー(Hierarchy)ビュー
    新規オブジェクトの作成と、作成したオブジェクトの一覧表示。

  • インスペクター(Inspector)ビュー
    作成したオブジェクトやアセットのパラメータの参照・変更。

  • プロジェクト(Project)ビュー
    プロジェクト内のファイル情報。構成はOS上の階層構造を踏襲。

Sceneビューの移動方法

最初は戸惑いましたが慣れですかね。
普段PCゲームをする人なら操作感は違和感ないのでしょうか。

  • マウスホイール:Sceneビューの拡大・縮小
  • 右クリックを押しながらドラッグ:視点を回転
  • 真ん中クリックを押しながらドラッグ:Sceneビューの平行移動
  • オブジェクトをダブルクリック:指定のオブジェクトにフォーカス

Boltのインストール

Bolotはビジュアルスクリプティング機能(コーディングせずにGUIでスクリプトが作成できる)を用いる為のアセットですが、Visual Scriptingの機能はUnity2021.1以降は標準でパッケージとしてインストールされています。理解する前にBoltインストールしちゃいましたが、後になって不要だったと知りました。

オブジェクトの作成・変更

  • 3DオブジェクトはHierarchyビューから作成実施
    • 地面:Plane
    • 壁:Cube
    • ボール:Sphere (今回のPlayer)
  • 色の変更はProjectビューからMaterialファイルを作成
    • InspectorのAlbedoから色を変更
    • MaterialをHierarchyのオブジェクトにドラッグ&ドロップで色が反映される

ボールを落とす・転がす・演算機能の追加

PleyaerのInspectorビューからAdd Component→Rgidbodyを追加するだけでボールが自由落下する。初めて動きが出た。感動。
入力機能の設定はBoltを使った手順になっているが、Visual Scriptingでも同様の操作になるので、難なく設定ができました。

  • Update Event ユニットは、後続処理を毎フレーム更新時に呼び出す。
  • FixedUpdate Event ユニット は、物理演算でキャラクターが動く度に、後続処理を呼び出す。
  • Input.GetAxis ユニットは、キーボード入力を受け取ることができる。
  • Rigidbody.AddForceユニットは、取得したキー入力を元に力を加える。今回はInput.GetAxis ユニットの入力をrigidbodyに力を加えている。
  • Multiply ユニットは力を増幅させることができる。今回は10倍に増幅。
  • インスペクタビューの Variables で定義した変数(今回はSpeed)はVisiual Scripting上にドラッグ&ドロップするとGet Variable ユニットが生成される。Multiply ユニットの入力とすることで、増幅する値を変数にすることができる。image.png

カメラを動かす

  • Playerの子にMain Cameraを配置するだけで、オブジェクトを追随してくれる(親オブジェクトとの相対座標を保持)
  • ボールが回転するため、ただ追随するとカメラも回転してしまう。Visiual Scripting(グラフ)でカメラを制御する。やっていることはこんな感じ。
    1. PlayerとCameraの初期位置を設定
    2. PlayerとCameraの初期位置の差分を計算して、相対距離を求め、offset変数に入れる
    3. 現在のPlayerの位置を取得し、求めたoffsetの分加算してcameraの位置を設定するimage.png

アイテムの作成

カプセル(Capsule)オブジェクトをアイテムとして作っていく。同じオブジェクトを複製するには、prefabとして書き出すと便利。以下はVisiual Scriptingでの制御

  • Capsule ColliderのIs Triggerをon(チェック)することで、接触したことを検知できるようになる
  • OnTriggerEnter Event ユニット上の接触対象タグが"Player"であれば、オブジェクトを削除するフローを作る(Playerオブジェクトにタグ「Player」の設定も必要)image.png
    image.png

残アイテム数の表示

  • UIの表示はCanvasオブジェクトが必要。今回は数値をTextオブジェクトで表示
  • Canvas Scalerの設定によって表示のされ方が異なる
    • Constant Pixel Size:画面サイズによらず、サイズが固定(ピクセル基準)
    • Constant Physical Size:画面サイズによらず、サイズが固定(実単位基準)
    • Scale With Screen Size:画面サイズ(解像度)によって拡大・縮小される。画面内でのGUIバランスが保たれる。今回はコレ。横幅と縦幅どちら/または両方を基準に拡大・縮小するかなども設定する。
  • Item数をカウントするためにItemタグを作成し、ItemオブジェクトにItemタグを設定。
  • GameControllerオブジェクトを作成し、ITemタグをカウントし、表示先のScoreLabelにテキスト表示させるグラフを作成image.png

クリア時のUIの表示

  • WinnderLabelを作成し、クリア時に表示するテキストを設定(非表示設定)
  • Itemsタグを参照し、0になったらWinddnerLabelを表示させるグラフを作成image.png

ぶつかってはいけない壁の作成

  • Material内Emissionにチェックを入れると発光するオブジェクトが作成できる。ちなみに、「Post Processing」パッケージを入れるとより自然な発光を表現できるそう。(光が滲む感じ)
     参考:【Unity】Post Processing(ポストプロセス) を使って画面演出をリッチにする
  • Inspectorビューのstaticにチェックを入れると、動かないオブジェクトとして処理が最適化される。
     参考:静的ゲームオブジェクト
  • ライト(太陽光)の輝度はInspectorビューのIntensityで変更できる
  • ヒエラルキービューでBox ColliderのIs Triggerをon(チェック)することで、接触したことを検知できるようになる
  • グラフを作成。アイテム取得と同様に、On Trigger EnterユニットでPlayerとの接触を検知。現在のシーンを再読み込みするのもそれに応じたユニットが存在(SceneManagerユニット) image.png

以上で完成。
結構楽しめました。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0