Advanced Search
Search Results
53 total results found
ゲームオーバー UI
現状、ゲームが終わるとき、Debug.Log でメッセージを表示しているが、その代わりに Canvas で「ゲームオーバー」を表示し、「さいかい」と「おわり」のボタンを実装しましょう! シーンの準備 スプライト分割 まず、ブロックと同様に、画像を分解しないといけない。ただし、行列ではないので、きれいに縦横で分割できない。この場合は、マウスを使い、各スプライトの領域を定義しましょう: 3つのスクリプトを分割したら、「Apply」ボタンを押し、シーンを編集しましょう Canvasの準備 すでに作ったゲーム用の Can...
サウンドを追加
ボールが何かと衝突、またはボールが失ったらサウンドを再生するようにしましょう。 ボールとパドル 新しい「BallHitSound」のスクリプトを作成し、以下の処理しましょう: サウンドファイルを Inspector で設定する 衝突の時 ( OnCollisionEnter2D )、ボールのタグを確認する ボールだったら、設定したサウンドを AudioSource.PlayClipAtPoint() で再生する。 // ボールが衝突したら、サウンドを再生 public class BallHitSound : ...
プロジェクト設定
まず、新規プロジェクトを作成しましょう。2Dゲームであるため「Universal 3D」を選んでください。プロジェクト名は「legend」にしましょう。 素材を追加 3Dモデル 主人公(Timmy)とゾンビのモデル(Mixamo) キャラクターのアニメーション ステージ作成のパーツ(Kenney) 画像、テクスチャ プロトタイプ用のテクスチャ UIのスプライト フォント(Google Fonts) すべての素材をプロジェクトに追加しましょう。 プロトタイプ用のシーンを構築 本番のシーンを作る前、各...
Timmyの移動を実装
主人公のゲームオブジェクトを作成 主人公のキャラクターの移動を実装しましょう。まず、空のゲームオブジェクトを作成し、「Player」という名前を付けてください。このゲームオブジェクトはプレーヤーの役割にする。 3Dモデルを追加 Characters/Timmy/Models から Timmy のモデルを追加してください。Player の子オブジェクトとして追加しましょう: よく見ると、色が多少おかしい。これはノーマルマップ(※)の問題であるので、解決しましょう。Characters/Timmy/Textures ...
主人公を追いかけるカメラ
Timmyの移動できたとしても、操作が確認しにくいので、プレーヤーを追いかけるカメラ(三人称視点)を作りましょう 単純なアプローチ 一番簡単なのは「カメラの位置を主人公の位置にしろ!」の仕組みである。これをすぐ試せるので、「CameraController」スクリプトを作成してみましょう: スクリプト // 主人公を追いかけるカメラ public class CameraController : MonoBehaviour { // 追いかけるオブジェクトのTransform [SerializeF...
Timmyがカメラに相対的に移動する
これでカメラが自由に回転できるようになったが、今度何かおかしい現象が発生。 カメラが主人公の後ろにある場合は、何とか正しく動きますが、真横、または正面から見ると入力する、主人公の動きが変に感じる。なぜなら、キャラクターがカメラの位置を関係なく、世界のXZ軸に沿って動くので、カメラの向きが変わったら、おかしく感じる。 この問題を解決するには、世界に絶対的に動くのではなく、カメラの向きに合わせて相対的に移動すること。 この場合は、カメラ前方(青い矢印)が世界のZ軸と並行になっているので、「W」キーを...
ジャンプを実装
ジャンプは前後左右の移動とは関係ないため、別のスクリプトとして実装ができる。同じPlayerMoveでも実装できるが、「一つのスクリプト=1つの責任」の考えを従い、今回はジャンプ専用の「PlayerJump」スクリプトを作成しましょう。 このスクリプトは「Jump」という入力(プロジェクト設定→入力マネージャーを確認)が発動したら、一旦Y軸の速度を変えて、上がるようにしましょう。また、ジャンプ力をUnityで変えられるようにしましょう。 スクリプト using UnityEngine; // ジャンプ機能を追加す...
アニメーションを追加
Timmy がずっと「T-ポース」でなかなか面白くないので、走るときとジャンプの時もアニメーションを再生しましょう。このため「アニメーションコントローラー」(Animation Controller)および「アニメーター」(Animator) コンポーネントを使用し、条件でアニメーションを切り替えて、主人公を適切に動かしましょう。 シーン設定 動くのは Timmy なので、Timmy (Playerではなく) に Animator コンポーネントを追加してください。 ここで、「Controller」と「Avata...
アイテムを拾う
3D シーンの配置できるコインと鍵を拾って、Timmy が持っているアイテムを追跡しましょう。 コイン シーンにコインを一つ作ろう(後ほどプレハブにして、何個も配置できるようにする)。まず、「Coin」の名前で空のオブジェクトを作成する。拾う処理を確認しやしくするため、Timmyの近くに配置してください。 次、「Coin」の子オブジェクトとして、3Dモデルを追加しましょう。Meshes の中にある「coin-gold」を「Coin」の中に挿入し、位置は 0, 0, 0 にしてください。 最後、3Dモデルとの接触を確...
宝箱を作成
このステップで、宝箱のアニメーションを作成し、開く。ただし、主人公が事前に鍵を持っていることを確認しなければならない。また、遷移のないアニメーションの切り替えも紹介する。 宝箱の準備 シーンに宝箱のモデルをシーンに追加しましょう。Coin と Key と同様に、空のゲームオブジェクトを作成し、3Dモデルを子オブジェクトとして追加した方がおすすめ。 サイズが多少小さいので3Dモデル(子オブジェクト)のサイズは 2倍ぐらい大きくしましょう。 なお、ちゃんとぶつかるように、宝箱はコライダーが必要。3Dモデルの子オブジェ...
UIを作成
インベントリの中にあるアイテム(コイン、鍵)を画面上で表示し、主人公の体力も可視化しましょう。 Canvas作成 ヒエラルキーに新しい Canvas を追加してください。 Canvas Scaler を紹介 Canvas を作成するときに、同時に「Canvas Scaler」のコンポーネントを作成される。このコンポーネントは想定する画面のサイズに合わせて、自動的にCanvasを拡大縮小する。 例えば、UIを開発したときに、想定していた画面サイズは FullHD (1920 x 1080) だった。ただ、プレーヤーは...
ゾンビを実装
主人公を追いかける「ゾンビ」を実現しましょう! シーンの設定 ゲームオブジェクトと3Dモデル Timmyと同様に、ゾンビのゲームオブジェクトを作成しましょう。空のゲームオブジェクトを作成し、その下に子オブジェクトとしてZombieのモデルを追加する: ただし、ゾンビは物理的に動かないので、コライダーとリジッドボディが要らない。ゾンビの動かした方については、下記で説明する。 アニメーション 今回は、アニメーションは1つしかなくて、ずっと歩くようにしましょう。ただし、Timmy と同様に「アバター」の設定が必要。 ...
課題
Timmyの伝説に新たな機能を追加し、よりも面白くする! 例えば… HP回復アイテムを実装 罠を作成(消えるプラットフォーム→穴に落ちる) ドアを実装 定めたコインの数がないと開かない また、レバーを引くと開く HPゼロのときに、倒れるアニメーションを再生し、ゲームオーバーする 宝箱を開くと、コイン10個が飛んで出てくる サウンドを追加(アイテムを拾うとき、宝箱を開くとき) 移動プラットフォームを実装 ボールを投げ、ゾンビを倒す その他の好きな機能(自由) ルール 1つの機能を実装すると:合格(最低限)...
本番のシーンを作成
今まで、作業用のシーンでゲームに必要な各部品を開発してきた。これで、本番のステージを作れるので、まず、再利用するもを1つのグループにし、プレハブ化にしましょう 共通のゲームオブジェクト(Player、Base(カメラ)、Canvas(UI)と EventSystem)をグループ化し、再利用できるプレハブにする。Zombieは別のプレハブとして保存。 つぎ、新し「Game」シーンを作成し、「Meshes/PlatformKit」から好きなパーツを選んで、ステージを作成してください。「Common」プレハブを挿入し、...
夏休み・練習課題
義務ではないが、練習不足と思う学生にはおすすめ 目標 Unityでの開発と調査能力を向上する 先生が教えていない課題もあるので、少し調べる必要な場合もある 迷わず、判断力、開発スピードをUPする 自分の今のゆるいところを明確し、固める ポイント: 順番気にせず、答えれるのを先に答えて、難しい質問は最後に残す 最後に回答があるが、課題により、いくつかの解決方法がある。 下記の解決は、あくまで先生のやり方である。 C# / スクリプト(言語、およびUnityのの基礎) 次の質問をC#で回答してください(1行〜5...
C#の「イベント」(event)
概念 ここまで、C#で学んだ主な概念は メンバー変数:あるインスタンス(オブジェクト)のデータを保持するもの 体力 アイテムの一覧 速度 色 など メソッド:あるインスタンス(オブジェクト)が「できる」こと。データを処理する「関数」 走る ジャンプ 攻撃 フレーム毎の更新(Update) 初期化(Start) など クラス:インスタンスの「図形」であり、new (一般のC#) または Instantiate(Unity の Monobehavior / プレハブ)で具体化し、インスタンスになる。メン...
Unityで待機ができる処理:非同期処理
概念 Unityのスクリプトでは、Start()、Update()、OnTriggerEnter() などの定めたときに実行するメソッドがある(初期の時、フレーム毎、トリガーに入った) この機能が大変便利であるが、ゲームを開発中には、上記のメソッドを呼び出される瞬間ではなく、少し時間たってから実行したい場合もたくさんある。 例えば: 体力がゼロになった場合、すぐにゲームオーバーを表示するのではなく、主人公が倒れるアニメーションを再生し終わってからゲームオーバーを表示したい。 ローディング画面を表示し、次のステージ...
バージョン管理システム
バージョン管理システム(Version Control System - VCS)はコンピュータ上でファイルの変更履歴を管理するシステムです。 現在、ゲームを作成している際にミスをした場合、数回アンドゥ(元に戻す)操作を行って戻ることができます。しかし、これはプログラムを起動し続けている間のみ有効です。Unityを一度閉じて後で再起動した場合、それまでに行った変更を取り消すことはできません。 さらに、誤ってファイルを削除してしまうこともあるでしょう。この場合、ファイルは失われてしまい、一から作り直すしか選択肢...