ゲーム化!tomo_manaのブログ

ゲーム化!tomo-manaのブログ

Unityでゲームを作る方法について紹介しています

RPG

Unity学習#35 BGMの再生 (Unity 2020.3.26f1)

Unityで音楽を再生したり止めたりする設定。 概念 操作 初期化 再生 停止 一時停止/再開 ミュート フェードイン/アウト コード例 参考 概念 AudioSource、AudioClip、AudioListener音楽再生機器に、距離の概念を持たせたもの。●AudioSource : 音源。音楽の…

Unity学習#34-1 戦闘メニューの構成

戦闘メニューを作る前に、戦闘メニューの拡張性について考えます。 基本的な構成 手順数 手順の省略 キャラ選択の省略(順序固定) たたかうの省略(武器とアイテムへの回数制限) まほうとアイテムの同一視(まほうとアイテムへの回数制限) かくにんの省略…

Unity学習#33-1 メッセージと送り先に求められるもの

シーンによるプロジェクトの分割を考えるにあたり、メッセージに求められる条件を考えました。 概要 メッセージの目的 メッセージと送り先 メッセージの型 送り先の型 メッセージと行動の決定 メールボックス ブロードキャスト あいまいな指示 情報拡散、あ…

Unity学習#33 シーンによるプロジェクトの分割#3 (Unity 2019.4.4f1)

今回は、シーンによるプロジェクトの分割の3回目で、第31回から作ってきたサービス(シーンの切り替えを仲介する機能)を使って、シーンを切り替えるメッセージを送ります。 前回までの流れ 今回やりたいこと サービスが作られたか(存在するか) 親(マネー…

Unity学習#32 シーンによるプロジェクトの分割#2 (Unity 2019.4.4f1)

今回は、前回の続きで、サービス同士を連結させて、任意のシーンにアクセスできる環境を作ります。 前回までの流れ 考え方 コード 動作テスト 次回 前回までの流れ tomo-mana.hatenablog.com プロジェクトをシーンで分割して、作業、デバッグをしやすくする…

Unity学習#31 シーンによるプロジェクトの分割#1 (Unity 2019.4.4f1)

今回から、シーンによるプロジェクトの分割に挑戦します。「シーンによるプロジェクトの分割」と呼んでいるのは、ゲーム自体を複数のシーンに分けて作業性を高め、分割・結合を簡単にできるようにすることです。ゲーム全体を一つのマネージャー(ゲーム全体…

Unity学習#31-1 シーン設計とメッセージ(RPGの例)

シーン間通信を設計するにあたって、先にシーン設計とメッセージ(シーンを切り替える理由)を定義します。 シーン遷移:RPGの例 シーン構成(グループ化) メッセージ メッセージの仮想化 仮想化の例 注意点 シーン遷移:RPGの例 一般的なRPGでは、タイトル…

Unity学習#30 戦闘シーンへのドライバモジュール追加 (Unity 2019.4.4f1)

今回は、戦闘シーンについて考える合間に、シーンを使ったサブシステム化を試します(シーンを使ってデバッグ用のドライバモジュールを追加します)。マネージャーシーン無しでもデバッグできるようにすることで、シーン毎の作業分担だけでなくシーンの結合…

Unity学習#28 ランダムエンカウント (Unity 2019.4.4f1)

今回は、ランダムエンカウント(一定歩数歩いたら敵が出る)に挑戦しました。 乱数データ A:1歩ごと乱数振出 アルゴリズム 結果 B:目標歩数+補正値 アルゴリズム 結果 コード 画面表示 余談 次回 UnityEngine.Random については、別の記事にまとめました…

Unity学習#28-1 乱数の生成 (Unity 2019.4.4f1)

ランダムエンカウントで使用する乱数について調べた内容をまとめます。 インターフェース 乱数の値 再現性 予測可能性 Unityで使用される乱数はXorShiftを使用している?XORとSHIFTだけで計算するため軽量、かつ一周するまでに2128-1のため周期性を予測され…

Unity学習#27 歩数カウンタ (Unity 2019.4.4f1)

今回から、戦闘シーンの設計に入ります。今回は、歩いた時に敵に遭遇する(ランダムエンカウント)を実現するために、歩いたかどうかをチェックする機能(歩数カウンタ)を追加します。 仕様 実装 ベースとなるコード 修正コード 次回 仕様 機能そのものは非…

Unity学習#26 ScrollViewでテキストをシェルのように表示する (Unity 2019.4.4f1)

今回はScrollVIewを使って、テキスト入力をシェルのように表示する方法に挑戦します。今回はテキストの大きさに応じてScrollVIewのContentが動的にサイズ変更されて、いつも最後に追加された行が表示されるようにフォーカスする処理までまとめます。次回、オ…

Unity学習#4 マップを創る (Unity 2019.4.4f1)

パソコン入れ替えによるプロジェクト復旧の第二弾。今回はマップを創ります。以前の記事であいまいだった部分を少し明確にしました。 パレットの作成 Tile Palette ウィンドウを開く 新しいパレットの作成 画像の分割(省略) パレットに画像を展開 Tilemap…

Unity学習#2~#4 キャラを画面に表示する (Unity 2019.4.4f1)

パソコンを新調したので、以前のプロジェクトを移動しようとしたのですが、うまくいきませんでした。せっかくなので、これまでの記事を頼りに、少しショートカットしながら復元することにしました。 (プロジェクトの移動についてはそのうちに再チャレンジし…

Unity学習#24 (Unity 2019.4.1f1) 画面に文字を1文字ずつ表示する#1

今回は、RPGやノベライズゲームでおなじみの、画面に文字を1文字ずつ表示する処理を実装します。この機能は、コードを公開して下さっている方がいて、とても助かりました。今回は、Submitを押すごとに表示が切り替わるように実装し、次回は前の文章を残した…

Unity学習#23-1 (Unity 2019.4.1f1) 最大・最小値を加味したパラメータへの加算

今回は、アイテムでステータスを更新する処理(第23回)に関連して、最大・最小値を加味したパラメータへの加算を実装します。<目次> 最大・最小を超えない範囲で値を加減算する インターフェース 最大・最小を持つパラメータの構造 コード パラメータ名か…

Unity学習#23 (Unity 2019.4.1f1) ステータスとアイテム効果の実装

今回は、アイテムを使った時の、特にプレイヤーキャラクターのステータスに与える効果を実装していきます。また、キャラクターのステータスも未実装でしたので、併せて実装します。 今回から、少し記事の単位を小さくします。最近は、設計が進んできたために…

Unity学習#22 (Unity 2019.4.1f1) 使ったアイテムの削除、アイテムへの操作を画面に表示

メニュー作成も長期戦になりましたが、やっと本来やりたい処理を実装できるようになってきました。今回は使ったアイテムがリストから削除される処理と、アイテムを使った時の内容を画面に表示する処理を実装します。 概要 修正の順序 修正コード アイテムへ…

Unity学習#21 (Unity 2019.4.1f1) リストにカーソル矢印を追加する(#13, 16, 17 不具合修正)

第16回で実装した「リストにカーソル矢印を追加する」処理について、第17回で複数リストに対応した時に、以下の不具合が出ていました。 (1) リストを表示した時に、最初の1個目が選択状態にならない(NullReferenceException) (2) 2つ目のリストを表示した…

Unity学習#20 (Unity 2019.4.1f1) リストからアイテムを使えるようにする#2 ~アイテムによって表示する選択肢を変える~

今回は、第13回から作っているアイテムリストに、アイテムによって表示される選択肢を変える方法に挑戦しました。この修正の一環で、リストをUpdate() 中の任意のタイミングで更新するように修正します。またこの時、リストの要素数も変更できるようにしまし…

Unity学習#19 (Unity 2019.4.1f1) リストからアイテムを使えるようにする#1

今回から、いよいよ第13回から延々と作ってきたメニューで、アイテムを使えるようにしていきます。今回は最初の段階として、リストに必要なデータをリストの外から持ってこられるようにします。今回も、いくつか落とし穴があって時間がかかりました。本当は…

Unity学習#18 (Unity 2019.4.1f1) アイテムとステータス

今回はリストにアイテムを表示させるに先立って、アイテムとステータスを定義します。 ステータス 項目 最小値 最大値 データの最大値と表示の最大値 保存容量による制限 最大値と最小値の差 アイテム アイテムの効果 要素 付与の例 回復の例 時間制限がある…

Unity学習#17 (Unity 2019.4.1f1) リストをメニュー画面に組み込む

今回は、第14回と第16回で作成したリストを、メニュー画面(第13回)の中に組み込みます。 今回は思ったよりあっさり動きましたが、課題が残りました。 構成 これまでの構成(修正前) 修正後 構成の変更 ScrollView の移動と複製 コードの修正 Window Windo…

Unity学習#16 (Unity 2019.4.1f1) リストにカーソル矢印を追加する

今回は第14回で作成したリストにカーソル(今どの項目が選択されているか)を追加します。(カーソルという呼び方が一般的かどうか分かりません) ボタンを使ったリストの作り方は、サイトを見つけられたのですが、パネルでカーソルを実現するサイトが見つけ…

Unity学習#15 (Unity 2019.4.1f1) テキストの日本語化(TextMeshPro)

今回はテキストの日本語化に挑戦しました。今回もどはまりするかと思いきや、意外とすんなり日本語にできました。先駆者の方がいて下さることに感謝です! 参考にしたサイト フォントのインポート アセットの作成 Font Asset Creator の表示 日本語の登録 Te…

Unity学習#14 (Unity 2019.4.1f1) 大きさを変えられるリスト

今回は、要素数で大きさを変えられるリストに挑戦しました。第13回で作成したアイテムやコマンド一覧、選択肢の表示に使います。しかし、これが思っていたよりもかなり大変で、理解にかなり時間がかかりました。リストの基本要素と、GameObjectが階層を持っ…

Unity学習#13 (Unity 2019.4.1f1) メニューの設計

今回はメニューの基礎部分の設計に挑戦しました。これまで使用していた「Player」という言葉ですが、Unity上では複数の意味で使われることが分かりました。そのため、今回から、「ゲームをプレイする人」が操作するゲーム上のキャラクターを「操作キャラ」と…

Unity学習#12 (Unity 2019.4.1f1) キーの追加(Input Manager と Input System)

今回は、キーの仕様を決定し、キーを追加します。キーの追加には Input Manager か Input System を使用します。Input Manager は従来からあるキー管理の方式、Input Systemは最近追加された方式です。今後は Input System に一本化されるようです。 今回は …

Unity学習#11 (Unity 2019.4.1f1) 操作の観察

今回から、ステータスとコマンドの表示に挑戦しようと思ったのですが、よく考えたらステータスとコマンドって、RPGの操作の肝というか、そう簡単にこれと一つに決められないなと今更ながら気づきました。そこで、今回は操作に関するデザインの観察とキー配置…

Unity学習#10 (Unity 2019.4.1f1) フェードイン・アウト#2~ワープ処理との結合

画面のフェードイン・アウトが思ったよりコード量があるので、前回と今回の2回の記事に分けました。今回は第9回で作ったフェードイン・アウト処理と第8回のワープ処理をくっつけます。 フェードイン・アウトのインタフェース(第9回) ワープの状態 状態遷…