2020-01-01から1年間の記事一覧
パソコンを新調したので、以前のプロジェクトを移動しようとしたのですが、うまくいきませんでした。せっかくなので、これまでの記事を頼りに、少しショートカットしながら復元することにしました。 (プロジェクトの移動についてはそのうちに再チャレンジし…
今回は、RPGやノベライズゲームでおなじみの、画面に文字を1文字ずつ表示する処理を実装します。この機能は、コードを公開して下さっている方がいて、とても助かりました。今回は、Submitを押すごとに表示が切り替わるように実装し、次回は前の文章を残した…
今回は、アイテムでステータスを更新する処理(第23回)に関連して、最大・最小値を加味したパラメータへの加算を実装します。<目次> 最大・最小を超えない範囲で値を加減算する インターフェース 最大・最小を持つパラメータの構造 コード パラメータ名か…
今回は、アイテムを使った時の、特にプレイヤーキャラクターのステータスに与える効果を実装していきます。また、キャラクターのステータスも未実装でしたので、併せて実装します。 今回から、少し記事の単位を小さくします。最近は、設計が進んできたために…
メニュー作成も長期戦になりましたが、やっと本来やりたい処理を実装できるようになってきました。今回は使ったアイテムがリストから削除される処理と、アイテムを使った時の内容を画面に表示する処理を実装します。 概要 修正の順序 修正コード アイテムへ…
第21回で、これまでEventSystemで使用していた SetSelectedGameObject() ではどうしても解消し切れなかった要求のために、自作イベントを作ることにしました。Unityでは、独自のイベントを定義するためのインターフェースとして ExecuteEvents.Execute() 関…
第16回で実装した「リストにカーソル矢印を追加する」処理について、第17回で複数リストに対応した時に、以下の不具合が出ていました。 (1) リストを表示した時に、最初の1個目が選択状態にならない(NullReferenceException) (2) 2つ目のリストを表示した…
今回は、第13回から作っているアイテムリストに、アイテムによって表示される選択肢を変える方法に挑戦しました。この修正の一環で、リストをUpdate() 中の任意のタイミングで更新するように修正します。またこの時、リストの要素数も変更できるようにしまし…
今回から、いよいよ第13回から延々と作ってきたメニューで、アイテムを使えるようにしていきます。今回は最初の段階として、リストに必要なデータをリストの外から持ってこられるようにします。今回も、いくつか落とし穴があって時間がかかりました。本当は…
第19回で、リストの内容をリストの外(セーブデータなど)から渡す処理を実装するにあたって、ゲームオブジェクト間の連携がうまくいかない点がいくつかあったため、Awake()、Enable()/Disable()、Start()/Update() のコールタイミングを調べました。 最初…
第19回で、リストの内容をリストの外(セーブデータなど)から渡す処理を実装するにあたって、継承とインターフェースについて整理しました。他の言語(C++、Java)との違いで少し混乱したためです。 やりたいこと 継承を使用した場合 基底public virtual + …
今回はリストにアイテムを表示させるに先立って、アイテムとステータスを定義します。 ステータス 項目 最小値 最大値 データの最大値と表示の最大値 保存容量による制限 最大値と最小値の差 アイテム アイテムの効果 要素 付与の例 回復の例 時間制限がある…
今回は、第14回と第16回で作成したリストを、メニュー画面(第13回)の中に組み込みます。 今回は思ったよりあっさり動きましたが、課題が残りました。 構成 これまでの構成(修正前) 修正後 構成の変更 ScrollView の移動と複製 コードの修正 Window Windo…
今回は第14回で作成したリストにカーソル(今どの項目が選択されているか)を追加します。(カーソルという呼び方が一般的かどうか分かりません) ボタンを使ったリストの作り方は、サイトを見つけられたのですが、パネルでカーソルを実現するサイトが見つけ…
今回はテキストの日本語化に挑戦しました。今回もどはまりするかと思いきや、意外とすんなり日本語にできました。先駆者の方がいて下さることに感謝です! 参考にしたサイト フォントのインポート アセットの作成 Font Asset Creator の表示 日本語の登録 Te…
今回は、要素数で大きさを変えられるリストに挑戦しました。第13回で作成したアイテムやコマンド一覧、選択肢の表示に使います。しかし、これが思っていたよりもかなり大変で、理解にかなり時間がかかりました。リストの基本要素と、GameObjectが階層を持っ…
Unity学習#14では、リストの要素数でサイズが変わるリストの作成手順について書きました。この記事は、その前段として、リストの各階層にアクセスするために必要な GameObject、Component、Transform の関係性についてまとめます。先に結論を書き、その後で…
Unity学習#14では、リストの要素数でサイズが変わるリストの作成手順について書きました。この記事は、その前段として、リストの作成方法についてまとめたものです。リストには Scroll View を使用します。先にリストの作成に必要な手順をまとめ、その後に各…
今回はメニューの基礎部分の設計に挑戦しました。これまで使用していた「Player」という言葉ですが、Unity上では複数の意味で使われることが分かりました。そのため、今回から、「ゲームをプレイする人」が操作するゲーム上のキャラクターを「操作キャラ」と…
今回は、キーの仕様を決定し、キーを追加します。キーの追加には Input Manager か Input System を使用します。Input Manager は従来からあるキー管理の方式、Input Systemは最近追加された方式です。今後は Input System に一本化されるようです。 今回は …
今回から、ステータスとコマンドの表示に挑戦しようと思ったのですが、よく考えたらステータスとコマンドって、RPGの操作の肝というか、そう簡単にこれと一つに決められないなと今更ながら気づきました。そこで、今回は操作に関するデザインの観察とキー配置…
画面のフェードイン・アウトが思ったよりコード量があるので、前回と今回の2回の記事に分けました。今回は第9回で作ったフェードイン・アウト処理と第8回のワープ処理をくっつけます。 フェードイン・アウトのインタフェース(第9回) ワープの状態 状態遷…
今回はフェードイン・アウトに挑戦します。(どっちか分からなくなるので、フェードインは「画面が明るくなる」、フェードアウトは「画面が暗くなる」です)画面を明るくする、暗くする処理と、それをワープのエフェクトに使うのと両方をする予定でしたが、…
第8回は、キャラクターのワープに挑戦しました。 ここまで実装を続けてくることで、Unityの基本的な構想が分かってきて、キャラクターのワープの実装についても勘が働くようになってきました。 キャラクターのワープは、第5回の当たり判定と、前回(第7回)の…
最低限のマップができ、キャラクターが四方を向くようになったので、いよいよ町やダンジョンへのワープを実装していこうと思いましたが、先にキャラクターに合わせてマップの再描画(古い表現ですね)が必要なことに気が付きました。 町やダンジョンへのワー…
今回は十字キーで入力した方向にキャラクターが向く、歩く(アニメーション処理)に挑戦しました。 Animation と Animation Controller を使います。慣れれば直感的ですが、初心者には少しクセがあるように感じました(本投稿でまとめてあります)。アニメー…
今回は障害物の作成と当たり判定に挑戦しました。 かなりてごずりました。 キャラクターをグリッドに合わせる 層を分ける 層を定義する 層を設定する 障害物 境界線の設定 キャラクターの境界線 障害物の境界線 オブジェクトに質感を付与する キャラクターの…
プレイヤーを動かせるようになったので、今日はマップに挑戦します。最初は2DのRPGを目指すので、TileMapというものを使うことにします。しかし2019年度版のTileMapの使い方について分かりやすいサイトを見つけられず、2017年度版の説明が書かれたサイトを参…
今日はキャラクターを操作します。背景を動かす方法まで行く予定でしたが、思いのほかボリュームがありそうなので、一旦まとめました。 今のオブジェクトの位置 十字キーによる操作 キーの取得 オブジェクトの移動 気づいたこと 次にやること (#2~#4をまと…
Unity2回目の投稿ですが、学び始めは情報量が多いので、小出しにすることにしました。 Unityの画面の説明 キャラクターを配置する 画像の読み込み オブジェクトに画像を割り付け 配置された画像の位置変更 キャラクターを動かしてみる C#スクリプトを作成す…