Unityでインディゲームを作る!

Unityでのゲーム制作を目指し、それに関わる話題についてのブログ

UnityのためのC#

Unity Cinemachineを使って、ダッシュ時に自動で進行方向に向くTPSカメラを作る!

今回はUnity公式のカメラ制御システムであるCinemachineを使って、マウスなどでカメラをコントロールしつつも、ダッシュ時には進行方向に自動で向いてくれるカメラを作ってみたいと思います。 カメラの制御は特に3Dゲームで重要で、カメラ操作が多すぎるとプ…

UnityのオブジェクトプールAPIについて [ UnityEngine.Pool ]

オブジェクト・プールというのはプログラミング・パターンのひとつで、あらかじめオブジェクトを生成してプール(備蓄)しておくことで実行中の負荷を減らそうという手法です。 Unityでもよく使われるパターンのひとつですが、Unity 2021にてオブジェクト・…

シリアライザ MessagePack-C#をUnity(IL2CPP環境)で使ってみる!事前のコード生成に注意!

今回はC#シリアライザであるMessagePack-C#のUnity (2022.3.8f1)での使い方についてまとめたいと思います。著者もまだまだ使い始めであり、あくまで最低限使えるようになるまでの入門編ですので、ご了承ください。(約3500文字) [追記] この記事を書いた直…

結局、UnityのScriptableObjectとは何なのか?についての解答を思いつきました。

Unity公式のe-bookでScriptableObjectへの理解が進んだとは言え、モヤモヤは残っていました。結局、ScriptableObjectって何なのか、と。しかし、遂に自分なりの答えを見つけることが出来たのでここに記します。 ScriptableObjectとは、アセット化することの…

Unity スクリプト・テンプレートを自分で作成し、設定する。[Script Templates]

今回はScript Templatesを自分で作成することで、Unity上でのスクリプト作成を効率化する方法について書いていきます。 Unity公式による、コーディング・スタイルについてまとめたe-book "Create a C# style guide"を参考にしています。スクリプト・テンプレ…

UI toolKit (UIElements)を使ってScriptableObjectのインスペクターをゲームオブジェクト側に表示する方法 [ InspectorElement ]

今回はScriptableObject(スクリプタブル・オブジェクト)をより使いこなすためのエディター拡張テクニックをUI toolKitで再現しようという試みです。 内容はタイトルの通りですが、ゲームオブジェクト側のインスペクターからScriptableObjectのデータを操作…

Unity2021.3 | OnCollisionEnterを使ってボールを跳ね返す壁を作る[ relativeVelocity ]

UnityにおいてColliderが衝突した時に呼び出されるOnCollisionEnterを利用して、ボールが綺麗に跳ね返る、あるいは反射する壁を作ってみました。ここでのボールとはRigidbodyコンポーネントを持ち、物理挙動をするボールのことです。 単純にボールがバウンド…

Unity 2021 LTS 祝リリース! C#8対応で可能になった新しいswitch式について

Unity 2021LTS版がリリースされました。多くの新機能があるのですが、今回はUnityが、C#8.0に対応したことで可能となった、新しいswitchの書き方についてです。 なお、文とは"statement"を指しますが、この新しい構文は厳密にはstatement(文)ではなく"式"…

Unity Post Processingの各パラメータをスクリプトから操作する方法について[ URP ポスト・エフェクト ]

Unityでの画作りに欠かせない存在となっているポスト・エフェクトをC#スクリプトから操作する方法について簡単にまとめます。なおユニバーサル・レンダーパイプラインでの実践となるので、ご了承ください。 シーンにGlobal Volumeを作成、Post Processing Pr…

Unity TextMeshProのテキストをスクリプトから操作する、変更方法について [ UI text ]

2021.2以降、Unity UIでのテキストはTextMeshProに完全に置き換わりつつあるようで、今回はそのテキスト内容をどう変更するかについてです。 TextMeshProはもはやUnityの基本システムであり、標準でパッケージがインストールされています。問題は以前(Legacy…

Unity Input SystemでマウスポインタからRaycastを飛ばし、狙ったオブジェクトの色を変える! [ マウスカーソル ]

Input Systemが正式導入されて、二年ほど経つわけで今更なのですが、しばらくUnityに触ってなかった自分のような者にとっては、なかなか触りにくい新機能でした。 しかし、そうも言っていられず、最近ようやく触り始めていて、その素晴らしさに感激している…

物理演算、衝突判定、コライダーの検出などで使うLayerMaskについて [Raycast, Collider, Culling-Mask]

Layer(レイヤー)とは、ゲーム・オブジェクトを分類したり、あるいは物理演算や衝突判定において、各レイヤー間でぶつかるかどうかを設定したりするのに使える、Unityの基本システムの一つです。 ビルトイン(組み込み)・レイヤーとして、DefaultやTranspa…

UnityのGetComponentInParentとGetComponentInChildrenの挙動おかしくなってないですか?と思ったら勘違いでした。

少し気になったことがあったので書きます。環境はWindows10でUnity2020.3.22です。お前の使い方、環境が悪い!案件だったらすいません。と、この記事を書いた後に調べてみたら、どうやら自分の勘違いでした! 結論から言えば、GetComponentInParentやGetComp…

DOTSで玉転がしゲームを作ってみた!後編 [ Unity_2019.3x, Entities_0.6 ]

前回は前置きだけで終わってしまったので、今回はいよいよDOTSで制作した玉転がしゲームの中身について書いていきます。8000文字を超える大作です! 本ブログのチャンネルを設立し、テストプレイ動画をアップしました。音もない状態ですがひとまず。 DOTS及…

DOTSで玉転がしゲームを作ってみた!前編 [ Unity_2019.3x, Entities_0.6 ]

Unityの新たな可能性の一端を示すUnity 2019.3ですが、その中でDOTSの開発は大きく進み、プレビュー版ではありますが自分なりにいろいろ試しています。まだ分からないことが多いですが、かなり面白いです! [ 追記 2023/06 ] Unity 2022 LTSにて、ECS(Entiti…

Unityでのオープン・ワールドにおけるBGMの自然な切り替えとFMODについて

オープンワールド・ゲームにおいて、BGMを自然に切り替える、クロスフェードする方法をUnity上で再現してみたので、その経緯と結果をまとめます。そして、自分なりにやってみた後で、FMODという画期的なオーディオ・ソフトウェアに出会ったので、それについ…

カメラを揺らして、画面上の敵を振動で倒すブロックを作る!| Unity 2D ポリモーフィズム 継承

下から叩くと画面を揺らし、画面上にいる敵キャラを全部倒す、というブロックをUnity2Dで再現してみました!一気に敵を一掃できる爽快感溢れるアクションになりますが、これを上手くやるためにはカメラを揺らすだけでなく、ポリモーフィズムと継承を上手く活…

スーパードンキーコングでのバナナ、星の動きを再現してみた。

スーパードンキーコング・シリーズと言えば、レア社と任天堂による、SFCの傑作2Dアクションゲーム三部作です。今回はその"バナナ"や☆の獲得後の動きを再現してみました。 本シリーズのバナナは言わば、マリオにおけるコインのような存在で、100本集めると一…

UnityでGetComponentを使って参照を得るということ。Unityにおけるオブジェクト指向とは、的な。

Unityでのスクリプト作成、コーディングにおいて重要であり、かつ基本的なメソッドである"GetComponent"について、まとめてみます。 そして、そもそも"参照(リファレンス)を得る"ということはどういうことか?という基本的な部分についても書いてみたいと…

下から叩くとアイテムが出るブロックの再現。二重コライダーの活用。

今回はUnity上で、マリオなどのアクションゲームで目にする"下から叩くとアイテムを出すブロック"を再現してみたいと思います。Unity2Dになりますので、3Dとの違いにご注意を。 完成版のGIFです。こんな感じでニュッと出るようにしました。明らかに敵っぽい…

ゲームのプログラミングにおいても重要な『列挙体』 Enum について。

人間にとって、意味のない識別番号を読みやすく、理解しやすくするために、列挙体"enum"は重要な存在! ※2017/07/12 じゃんけんの例を追記 ゲームと列挙体 ドラクエのやくそう、ポケモンのモンスターボールなど。ゲームにおいて、アイテムというものは無くて…

動く足場とプレイヤーが一緒に動くためには!Rigidbodyによる対処法検証!その1

"Rigidbody"を使った動く足場、床の作り方、それに乗ったプレイヤーと足場を同期させる方法について。現時点での解決法のまとめ! この行ったり来たりする、宙に浮く足場というものは、マリオをはじめたとしたアクションゲーム(海外で言うところの"Platform…

Unityのための打倒C#![3] 川の流れのように。(コードの流れについて)

物事には自然な順序があり、それはもちろんプログラムにもあるだろう、という部分から考えてみました。コードの自然な流れの感覚を身につける、ということについて。 プログラミングにおける基本原理。 プログラミングにおける基本要素としては、変数、関数…