「3D・2Dゲーム開発にチャレンジしたい!」のそんな熱いゲームクリエイターにおすすめなのがUnityです。世界中で活躍するゲームエンジン・Unityなら、3Dから2Dまで自在にモードを切り替えられます。
この記事では、Unityの3D・2Dモード切り替え方法を解説します。
クリエイティブな表現が大きく広がるエフェクト配置の実装手順も紹介するので、ぜひ最後までチェックしてください。
Unityとは?
Unityとは、ゲーム開発、建築、アニメなど幅広い分野で活用されているゲームエンジンです。
2005年にゲーム開発ツールとして誕生し、現在は世界中で28億人以上のアクティブユーザーを持つ人気ツールへと成長しました。
Unityの「C#」を使った直感的なプログラミングは、初心者でも思い描いたイメージを自由に表現できます。
対応プラットフォームは、パソコンからモバイル、ゲーム機、VR/ARなど実に多彩です。
ユニティちゃんなど、創作活動を後押しする取り組みも評価されているUnity。
Unityは個人利用であれば全機能無料で、開発したゲームのストアリリースも実現する、まさに「ゲーム開発者の夢」が詰まった魅力的なツールなのです。
Unityのマスコットキャラ・ユニティちゃん
Unityゲームエンジンマスコットとして誕生したユニティちゃん。
Unityと共に進化する「オープンソース系ヒロイン」として親しまれている3Dキャラクターです。
キュートなルックスと活発で頑張り屋の性格は、Unityユーザーをはじめ多くのゲームファンを虜にしています。
ハイエンドゲームにも対応する機能を備え、オリジナルゲームのキャラとして利用してもOK。
バーチャルYouTuberとして、映画「踊ってミタ」に出演するなど、活動の幅を広げています。
Unityの活用分野
Unityは、ゲーム開発以外にもさまざまな分野で活用されています。
以下では、Unityの主な活用分野と内容を表で紹介します。
活用分野 | 内容 | 活用例 |
ゲーム業界 | 2D・3Dゲーム開発 | ポケモンGO、原神、スーパーマリオラン |
医療業界 | 手術シミュレーション | 脳動脈瘤手術のVRシミュレーション |
自動車業界 | 車両デザイン | Hondaのデザイン作成 |
XR | VR/AR研修 | WalmartのVR研修 |
メタバース | 仮想空間での交流 | VRChatでのアバター作成 |
映像・エンタメ | 映画・ドラマ映像制作 | 360度動画 |
「まだUnityを使ったことがない」という方は、さっそくダウンロードしてみましょう。
以下の記事では、UnityをMacにダウンロードする手順を画像付きで丁寧に解説しています。
Unityの3D・2Dモードを切り替える方法
Unityは、2D・3Dのどちらのモードでも作業できます。
新しいプロジェクトを作成する際に希望のモードを選択できますが、プロジェクトの途中でモードを切り替えることも可能です。
Unityで3Dモードと2Dモードを切り替える際には、以下の手順で行います。
- 初期設定でのモード選択
- モード変更
- モード変更の確認
①初期設定でのモード選択
新しいプロジェクトを作成するにあたり、まず2D、または3Dモードを選択しましょう。
この設定により、プロジェクトの基本的な構成が決まります。
- Unity Hubを開き、「新しいプロジェクト」を選択
- プロジェクト名を入力して保存場所を指定
- テンプレートの中から「2D」または「3D」を選択
- プロジェクトが2Dまたは3Dモードで開始
②モード変更
プロジェクト作成後でも、2Dモードと3Dモードの変更は可能です。
具体的には、エディター設定を変更することでモードを切り替えられます。
- Unityエディターを開く
- メニューから「Edit」をクリック
- 「Project Settings」を選択
- 「Project Settings」の左側のメニューから「Editor」を選択
- 「Default Behavior Mode」オプションで「2D」または「3D」を選択
③モード変更の確認
設定変更後、新しく追加したモードに対応しているかを確認します。
例えば、2Dモードのシーンビューが2D表示、3Dモードは3D表示になっているかなどです。
Unityのモード変更の確認は、上記②エディター内の設定で行えます。
プロジェクトの進行中でも、2D・3Dのモードを切り替えることは可能です。
設定内容の詳細は、次項「Unityの2D・3Dモードの設定内容」を参照してください。
Unityの2D・3Dモードの設定内容
2Dモードと3Dモードでは、Unityエディターの設定内容が異なります。
以下では、2Dプロジェクトモードと3Dプロジェクトモードの具体的な設定内容をお伝えします。
2Dプロジェクトモードの設定内容
2Dプロジェクトモードの設定内容は、以下の表の通りです。
設定項目 | 2Dプロジェクトモード | ライティング設定 |
画像インポート | 画像は2D画像(スプライト) | ― |
スプライトパッカー | 有効 | ― |
シーンビュー | 2D表示に設定 | ― |
ゲームオブジェクト | ― | ― |
カメラの位置 | デフォルト位置は (0, 0, -10) 平行投影(オーソグラフィック)に設定 |
― |
Skybox(スカイボックス) | ― | 無効 |
Ambient Source(環境光のソース) | ― | 固定色(RGB 54, 58, 66)に設定されます |
リアルタイムグローバルイルミネーション | ― | オフ |
自動ビルド(Auto-Building) | ― | 無効 |
3Dプロジェクトモードの設定内容
続いて、3Dプロジェクトモードの設定内容をお伝えします。
設定項目 | 3Dプロジェクトモード | ライティング設定 |
画像インポート | ― | ― |
スプライトパッカー | 無効 | ― |
シーンビュー | 3Dモードに設定 | ― |
ゲームオブジェクト | デフォルト位置は (0, 1, -10) | ― |
カメラの位置 | 透視投影(Perspective)に設定 | ― |
Skybox(スカイボックス) | ― | ビルトインのデフォルトSkybox Materialに設定 |
Ambient Source(環境光のソース) | ― | Skyboxに設定 |
リアルタイムグローバルイルミネーション | ― | オン |
Baked Global Illumination | ― | 無効 |
自動ビルド(Auto-Building) | ― | 有効 |
Unityの3D・2Dのエフェクト配置実装手順
Unityのエフェクト配置の実装手順を3D、2Dごとに解説します。
エフェクトを3Dに配置する実装手順
はじめに、エフェクトを3Dに配置する実装をステップごとに解説します。
①UI要素の3Dワールド座標を計算
まず、UI要素のTransformを取得して、2Dワールド座標をスクリーン座標に変換します。
そして、スクリーンポイントから3Dカメラへのレイをキャストしたら、レイ上での3Dワールド座標を計算しましょう。
Transform uiTransform = // UI要素のTransformを取得
Vector3 screenPos = Camera2D.WorldToScreenPoint(uiTransform.position);
Ray ray = Camera3D.ScreenPointToRay(screenPos);
float distanceFromCamera = uiPlaneDistanceFromCamera; // UI平面とカメラ間の距離を取得
float distance = Vector3.Dot(ray.direction, Camera3D.transform.forward) / Camera3D.transform.forward.magnitude * distanceFromCamera;
Vector3 worldPositionIn3d = ray.origin + distance * ray.direction;
②開始位置と終了位置の間をLerp
次は、3Dカメラを使用して3Dワールド座標をスクリーン座標に変換します。
Vector3 startPosition = effect.transform.position; // エフェクトの初期位置を取得
Vector3 targetPosition = // ゲームロジックに基づいてターゲット位置を計算
float t = effect.time / _effectDuration; // 0から1までの正規化された時間取得
Vector3 interpolatedPosition = Vector3.Lerp(startPosition, targetPosition, t);
③エフェクトのTransform位置を設定
最後に、補間された位置をエフェクトに適用しましょう。
effect.transform.position = interpolatedPosition;
エフェクトを2Dに配置する実装手順
続いて、エフェクトを2Dに配置する実装を解説しましょう。
①UI要素の3Dワールド座標を計算
はじめは、3Dの配置実装方法と同様に、3Dワールド座標を計算します。
Transform uiTransform = // UI要素のTransformを取得
Vector3 screenPos = Camera2D.WorldToScreenPoint(uiTransform.position);
Ray ray = Camera2D.ScreenPointToRay(screenPos);
Vector3 worldPositionIn3d = ray.origin; // 2Dカメラは正射投影なので、原点が3Dワールド座標
②3Dワールド座標をスクリーン座標に変換
次は、3Dカメラを使い、3Dワールド座標をスクリーン座標に変換してください。
Vector3 screenPos3D = Camera3D.WorldToScreenPoint(worldPositionIn3d);
③スクリーン座標を2Dワールド座標のレイに変換
スクリーン座標から2Dカメラを使用してレイをキャストします。
Ray ray2D = Camera2D.ScreenPointToRay(screenPos3D);
④エフェクトのTransform位置を設定
最後に、レイの原点をエフェクトのTransform位置に割り当てたら完了です。
「さらにオリジナリティを追求したゲームを開発したい」という方は、3Dモデリングソフト・Blenderと連携するのもおすすめです。以下の記事にUnityとBlenderの連携方法を記載しているので、気になる方はぜひご一読ください。
Unityの3D・2Dゲーム開発をスキルアップするには?
Unityの機能をもっと使いこなして、ゲーム開発の幅を広げたいという方もいるでしょう。
「飽き」のこない魅力的なゲームを開発するためには、やはりUnityで実現できる高度な表現技法の習得が必要です。
それでは、Unityの2D・3Dゲーム開発のスキルアップに役立つ学習方法を3つ紹介します。
- テキストを活用する
- 学習サイトを利用する
- セミナーで学ぶ
学習方法①テキストを活用する
Unityの2D・3Dゲーム開発をスキルアップできる学習方法は、テキストの活用です。
近年のUnityユーザー増加を背景に、Unity関連テキストも数多くリリースされています。
Unity関連テキストは、初心者から中・上級者向けまで幅広くそろっているので、ユーザーのレベルに合わせて最適なテキストを利用できます。
テキストを使うとスキマ時間を使い効率的に学べますが、モチベーションを保ちにくいという欠点があります。
「数ページ読んだらやめてしまった」というケースもあるため、「1週間で〇ページ進める」など、具体性を持って学習スケジュールを組むことが重要です。
学習方法②学習サイトを利用する
Unityの2D・3Dゲーム開発のスキルアップには、ネット上の学習サイトも効果的です。
近年、Unityの公式サイトをはじめ、多くのUnity学習サイトがネット上で公開されています。
初心者から上級者までさまざまなレベルの学習者のニーズに応えられるコンテンツが無料で利用でき、画像や実際のコードを含む分かりやすい解説が提供されているサイトも多いです。
一方で、疑問や質問を相談できない、情報の信ぴょう性が確保できないなどの側面もあります。
また、テキスト学習同様に、モチベーション維持が難しい点もデメリットといえるでしょう。
学習方法③セミナーで学ぶ
Unityゲーム開発のスキルアップには、効率的に学べるセミナーもおすすめです。
セミナーでは、経験豊富な講師から直接指導を受けられる、最新情報やトレンドをいち早く学べる、疑問点をその場で解決できるなど、多くのメリットがあります。
セミナーによっては、講師オリジナルの裏技やノウハウを学べるケースもあるため、書籍や動画では叶わなかったスキルアップを望める可能性も高いでしょう。
Unityの2D・3Dゲーム開発初心者におすすめ!Unity基礎セミナー
BIZROADのUnity基礎セミナーは、初心者でもわずか2日間でUnityのプロフェッショナルなスキルを習得できます。
カリキュラムは、基礎操作、3D背景の作成、キャラクターの作成、ゲームAIの活用、ホラーゲームの作成、RPGゲームの作成など。ゲーム開発に必要な基礎知識から応用技術まで、幅広くカバーしています。
受講形式は会場とライブウェビナーの2種類です。ライブウェビナーでは、自宅にいながら受講でき、チャットや音声通話で講師に質問できます。
人気の会場受講は、日程、開場により満席も見られます。会場受講を希望する方は、早目にスケジュールをチェックして予約しておきましょう。
Unityの3D・2Dモードを切り替えるには?まとめ
Unityの2D・3Dゲーム開発を行う際には、2D・3Dモードを切り替えることも多いです。
ぜひこの機会に、BIZROADのUnity基礎セミナーでUnityの2D・3Dモードを使いこなすスキルを身につけ、2Dアクションゲーム、3D RPG、さらにはVRゲームなど、多彩なゲーム開発を実現しましょう。
![](https://bizroad-svc.com/blog/wp-content/uploads/2024/05/1f84400f1993bf7823c5e784fac79e0d-375x245.jpg)