はんなりと、ゆるやかに

アジャイル、スクラムが好きなITエンジニアが日々から学んだことをアウトプット

Unity初心者が始めるのにベストなチュートリアル / 玉転がしゲームを作った

Unityの基礎を学ぶためにUnityのチュートリアル「玉転がし」を受講しました。

learn.unity.com

今回受講した「玉転がし」は初心者向けの内容で、「新しいプロジェクトの作り方」から「ボールなどのオブジェクトの作り方」「物理演算の使い方」、「カメラのコントロール」などゲームを作る基礎的なことが学べます。
初心者でもこんなに簡単にゲームが作れるんだ!と感動と驚きが待っています。

チュートリアルは動画による説明なので操作方法に詰まることもなかったです。また、一つの機能について複数のやり方を説明してくれる丁寧な進行!初心者以外の方も新しい発見があると思います。
※動画の音声は英語ですが、字幕を日本語にすれば英語が苦手な僕でも問題ありませんでした。

所要時間
僕は何日かに分けて受講しました。説明を聞きながら実装して2〜3時間ぐらいで終わりました。

作ったゲーム

f:id:iucstscui:20200412132343g:plain

学べること

このチュートリアルで学べることをまとめておきます。知りたいこと、知らないことがあれば受講すると良いかと思います。

  • 新しいプロジェクトの作り方
  • GameObject
  • GameObjectの設定
    • Tag
    • アクティブ、非アクティブ
  • Components
    • Tranceform
    • Material
    • Rigidbody(物理演算)
    • Rigidbodyの設定
      • Is Kinematic
      • use gravity
    • Anchors
  • Prefabs
  • 静的なColliderと動的なCollider
  • エディターの操作方法
  • スクリプトの作り方
  • イベント
    • Start
    • FixedUpdate
    • LateUpdate
    • OnTriggerEnter
  • カメラのコントロール
  • リファレンスドキュメントの見方
  • プロジェクトやヒエラルキーの整理方法
  • ゲームのビルド

各ステップを紹介

チュートリアルは4ステップに分かれています。各ステップごとに特に重要だと感じた部分を中心にまとめていきます。

イントロダクション

learn.unity.com

このステップではどういったゲームを作るのか把握できます。全体を把握してから作ることで今なにをしているのかがわかりやすいですね。
作るゲームは矢印キーでボールを操作し、事前に配置されている箱を取得するゲームを作ります。

ゲーム画面の構成とプレイヤー

learn.unity.com

このステップではゲームをプレイするための土台とボールの操作を実装します。
たとえば、操作するボールはSphereというGameObjectを作成することで実現できます。
以下ようにEditorを操作することで簡単に3Dのボールを作成することが出来ます。
f:id:iucstscui:20200410224239p:plain

このステップでは以下の項目が学べます。

  • 新しいプロジェクトの作り方
  • GameObject
  • Components
    • Tranceform
    • Material
    • Rigidbody(物理演算)
  • スクリプトの作り方
  • イベント
    • Start
    • FixedUpdate
配置するパーツはすべてGameObject、違いはComponents (コンポーネント)

Unity上に配置するボールや壁、地面、箱などはすべてGameObjectと呼ばれるオブジェクトです。
GameObject自体は空の入れ物のイメージで、GameObjectにつけるComponents (コンポーネント)によって形や挙動などが変わります。物理演算もGameObjectにRigidbodyコンポーネントを付けることで物理演算を行うオブジェクトになります。

イベントごとの処理

スクリプトに処理を書くときUnity側から呼ばれるイベントをトリガーにします。このステップではFixedUpdateイベントでキーボード操作を実装します。

イベントの一覧と呼ばれる順は以下のページで説明されています。
docs.unity3d.com

カメラとプレイ領域

learn.unity.com

このステップではカメラがボールを追いかけるように実装します。

このステップでは以下の項目が学べます。

カメラワークもスクリプト

カメラもスクリプトを使って調整します。今回はLateUpdateを使って実装しました。

オブジェクトの収集、スコアの記録、ゲームのビルド

learn.unity.com

このステップではボールが箱に接触したとき、箱を取得するように実装します。合わせて、取得した数をテキストに表示します。

物理演算のコンポーネントが用意されているので接触判定もUnity側で判断でき、スクリプトにOnTriggerEnter関数を用意するだけで接触時の処理が書けます。

このステップでは以下の項目が学べます。

  • GameObject
    • Cube
    • Text
  • GameObjectの設定
    • Tag
    • アクティブ、非アクティブ
    • Anchors
  • Prefabs
  • Rigidbodyの設定
    • Is Kinematic
    • use gravity
  • 静的なコライダーと動的なコライダー
  • イベント
    • OnTriggerEnter
  • ゲームのビルド
静的なColliderと動的なCollider

Collider は物理衝突のためのコンポーネントです。Colliderには静的Colliderと動的Colliderがあり、Rigidbodyコンポーネントが一緒に付いているかどうかで性質が変わります。

  • Colliderのみ=静的Collider
  • Collider+Rigidbody=動的Collider

静的Colliderはゲーム中に動かすとパフォーマンスに影響があります。Unityのマニュアルに以下の説明が書かれてあります。

物理エンジンは静的コライダーは決して移動または変更されないことを前提として,この前提を基に有効な最適化を行うことが出来ます。従って静的コライダーはゲームプレイ中に無効/有効,移動やスケーリングをすべきではありません。もし静的コライダーを変更した場合,物理エンジンの内部処理のパフォーマンスが著しく低下することになります。さらに悪いことに,変更したらコライダーに誤った物理計算をコライダーに与えてしまいかねません。
https://docs.unity3d.com/jp/460/Manual/CollidersOverview.html

そのため目立たせるために動かすオブジェクトは動的Colliderにする必要があります。

まとめ

  • Unity初心者におすすめのチュートリアル
  • 丁寧な解説で玉転がしゲームが作れる
  • ゲームの基礎を学べる