Unityを久しぶりに触った。2Dと3Dのチュートリアルから再開。
やっぱり面白いんだなあ、Unity。
はろー、yukiです。
最後に触ったのが2年くらい前のことです。
今夏、久しぶりに何かを作ってみたくなり、チュートリアルから再開しました。
(ブログへの投稿は月が変わってしまいました)
これまでは3Dだけしか勉強していなかったのですが、今回は2Dへも挑戦。
公式から出ているチュートリアルをやってみて、メモとして残すことにしました。
結論から言うと、全体的にざっくり触れられて良い内容だったと思います。
ただ、全編英語なので、そこは覚悟しておいてください、苦手な方。
それでは順番にみていきましょう。
まずは、3Dから。
タイトルは「John Lemon's Haunted Jaunt: 3D Beginner」。
構成は次のようになっています。
ーーーーーーーーーーーーーー
- Setting up 3D Beginner
プロジェクト作成、アセットのインポート、各種ウィンドウの説明 - The Player Character: Part 1
キャラクターの追加、Prefabsの作成、アニメーション追加、Rigidbodyの追加、Colliderの追加 - Player Character: Part 2
C#スクリプト作成、キャラクターをキーボードのキーで操作、歩くアニメーション追加、回転動作の追加、FixedUpdate関数、Unityのビュー設定 - The Environment
ゲームステージ追加、Directional Light設定、Global Illumination Lightmappingの設定、Navigation Meshの設定 - The Camera
カメラ設定、Virtual Camera作成、Post-Processingの設定 - Ending the Game
UIの追加、Canvasの設定、C#スクリプト作成、ゲームエンディング追加 - Enemies, Part 1: Static Observers
動かない敵を追加、キャラクター発見用の視野追加、C#スクリプト作成、キャラクター発見、発見された時のエンディング追加、ゲーム再スタート追加 - Enemies, Part 2: Dynamic Observers
動く敵を追加、C#スクリプト作成、敵が動く、敵を複数配置、ヒエラルキーの整理 - Audio
Ambient(環境音楽、BGM)追加、C#スクリプト編集、ゲームエンディング時のオーディオ追加、足音の追加、PrefabsのOverride、敵の音を追加、3D音響 - Build, Run, Distribute
ビルド設定
ーーーーーーーーーーーーーー
このチュートリアルで躓いたのは、パート2だけですね。
このパートでは、主題でもあるキャラクターの「歩き」で、変数isWalkingを用意します。
これが、isWorkingになっている部分があり、isWalkingとちぐはぐしていました。
頭の中で「walk⇔work」になり、、、まあ、初歩的なミスですね。
完成後の画面はこちら。
次に、2D。
タイトルは「Ruby's Adventure: 2D Beginner」。
構成は下記の通りです。
ーーーーーーーーーーーーーー
- Setting Up the Unity Editor
プロジェクト作成、アセットのインポート、各種ウィンドウとUIの説明 - Main Character and First Script
メインシーン作成、Spriteの作成、ユニットの座標設定、ユニットのサイズ設定、C#スクリプト作成、Update関数、キャラクターの移動 - Character Controller and Keyboard Input
キーボード入力によるキャラクターの移動、キーボードのキー設定、時間とフレーム - World Design - Tilemaps
Tilemapの作成、Tileの作成、Tile Palette、Pixcel Per Unit、Sprite Editor、TilesetのSlice、Layerの設定 - Decorating the World
グラフィックスの設定、Sprite Sort Point、Pivotの設定、Prefabsの作成 - World Interactions - Blocking Movement
Rigidbody2D設定、Gravityの設定、Collidersの設定、Freeze Rotationの設定、Rigidbody2Dコンポーネント、Vector2Dコンポーネント、MovePositionメソッド、Collider範囲の編集、TileへのCollider設定、ColliderのComposite、Rigidbody2DのBody Type設定 - World Interactions - Collectibles
キャラクターの体力設定、関数作成、public変数、ColliderのTrigger、Is Triggerの設定、OnTriggerEnter2D関数、Destroy関数、変数の{get {return 戻り値; }}ブロック - World Interactions - Damage Zones and Enemies
ダメージゾーンの追加、Sleeping Modeの設定、ダメージ後の無敵状態、Draw Mode、Mesh Type、敵キャラクターの追加、敵キャラクターの動作、OnCollisionEnter2D関数 - Sprite Animation
Animatorコンポーネント、Animator Controllerの追加、Animation Window、Animationの作成、Animator Controllerの設定、Blend Treeの作成、Parameterの設定、Motionの追加、C#スクリプト作成、Transitionの設定 - World Interactions - Projectile
発射物の作成、C#スクリプト作成、Instantiate関数、Quaternion、キー入力による発射、Awake変数、Layerの設定、敵キャラクターがHit時の動作 - Camera - Cinemachine
Cinemachineインストール、Virtual Cameraの設定、Camera Modeの設定、解像力比の設定、Cinemachine Confiner、Layerの設定 - Visual Styling - Particles
エフェクト追加、Particle Systemの追加、Random Between Two Constants、エフェクトのフェードアウト、敵キャラクターへのエフェクト追加、Simulation Space、Stop関数 - Visual Styling - UI - Head-Up Display
UI Canvasの追加、Render Mode、Canvas Scaler、UIのイメージ編集、Anchor、キャラクターのポートレートと追加、体力バー、C#スクリプト作成、UnityEngine.UI宣言 - World Interactions - Dialogue Raycast
NPCの追加、Raycastの追加、RaycastHit2D関数、NPCレイヤーの作成、ダイアログ用UIの作成、Text Mesh Proの追加、C#スクリプト作成 - Audio
BGMの追加、Spatial Blend(2D/3D)、AudioSourceコンポーネント、PlaySound関数、敵キャラクターへサウンド追加、Audio Litenerの設定、3D Sound Settingsの設定、サウンドの遠近 - Build, Run, Distribute
プレイヤー設定、ビルド設定、ビルド
ーーーーーーーーーーーーーー
このチュートリアルでは、パート12の「ProjectileがEnemyにhitした時の処理」で躓きました。
チュートリアルでは、ProjectileがEnemyにHitした時の処理にはOnCollisionEnter2D()
が使用されています。
これはColliderを設定されたObjectが、同じくColliderを設定された別のObjectと衝突した時に使用される関数です。
僕がこれを使用した時、Projectileは衝突しても処理(Destroy)せず、Enemyもそのまま。
本来意図する動きとは異なる挙動でした。
そこで、Objectが衝突した時にTriggerを発動するOnTriggerEnter2D()
を使用しました。
処理の中身は、何一つ変えていません。
すると、意図した動き(ProjectileのDestroy、EnemyへのHit判定)が実現できました。
OnCollisionEnter2D()
が正しいとは思いますが、まあこういうこともあります。
そんな二つの違いは、下記を参考ください。
その他は特に問題なく進められたと思います。
チュートリアルを終えても、追加できるアニメーションやサウンドがあり、自分なりにアレンジもできます。
完成後の画面はこちら。
さてさて。
Unityを学ぶなら、まずはUnity Learnへアクセスするのが良いです。
勉強の仕方は色々ですが、勉強用の書籍を買わずとも、勉強はできます。
勉強が足りなくなったら、書籍に頼るのも一つの手ですね。
ちなみに、現在の僕はオリジナルゲームを開発中です。
3Dの簡単なものですが、チュートリアルをするだけで、結構できてしまうものですね。
(でも、その先の完成度を高めるまでが、これまた遠い)
たぶん、Android向けに公開するまでトライすると思います。
以上。