2025-01-01から1年間の記事一覧
UnityでUI上に直接お絵かきしたいことってありませんか? この記事では、RawImage + RenderTexture + Shader を使って、UI上にスムーズな線を描ける機能の作り方をご紹介します! できること UI(Canvas)上でマウス or タッチ操作によるお絵描き Shaderでな…
Unity で UI を開発していると、TextMeshPro のフォントを後から変更したくなることがあります。 特に大量のプレハブを使っているプロジェクトでは、手作業での変更はとても大変です。 今回は、すべてのプレハブに含まれる TextMeshPro コンポーネントのフォ…
Unityで「マリオのようなジャンプ」を再現する方法について解説します。 マリオシリーズのジャンプは、普通のジャンプと比べて非常に気持ちよく設計されています。 その秘密は、ジャンプ中・落下中で重力を動的に変化させている点にあります。 なぜ普通のジ…
この記事では、Stochastic Tri-Planar Mapping(確率的トライプラナー・マッピング)の仕組みについて解説し、作成したShaderGraphを共有します。 Tri-Planar Mappingとは? 通常のテクスチャマッピングでは、メッシュに対して1つのUVセットを使用しますが、…
「UV展開めんどくさい…」「地形に自然にテクスチャ貼りたい!」 そんなときに便利なのが Bi-Planar Mapping(バイプラナーマッピング)。この記事では、GitHubに公開されているShaderGraphを使って、UnityでBi-Planarシェーダーを実装する方法を紹介します。…
Unityで日本語の形態素解析を行うために、 軽量・簡単に使える NMeCab を導入してみました! この記事では、 NMeCabの導入方法 Unityへの組み込み手順 メソッド別の解析サンプル をまとめています! NMeCab導入手順 1. DLLファイルをダウンロード まず、NMe…
ShaderGraphのCustomFunctionNodeに使うHLSLファイルを書くとき、毎回ちょっと迷うので、自分用メモとしてサンプルを残しておきます。 テクスチャを読み込んで色を返す関数 テクスチャのUV座標に応じた色をサンプリングして返す、基本的な関数です。 HLSLの…
UnityのUniversal Render Pipeline(URP)のサンプルプロジェクトなどを見ていると、 Graphicsに設定されたURP Assetとは異なるURP Assetがシーンごとに使われているケースがあります。 「えっ?URP Assetってプロジェクト全体で1個じゃないの?」と思うかも…
Unityでゲーム開発をしていると、「ビルドサイズがでかすぎる!」という壁にぶち当たること、ありませんか? 特にTextMeshPro(TMP)を使っていると、Prefabごとに同じフォントアセットが複製されてしまい、ビルドサイズが爆増するという現象が起きがちです…
こんにちは!今回はUnityで任意の3Dオブジェクトをメッシュ単位でリアルタイムにカットする処理を実装してみました。この記事では、その仕組みやコードのポイントを解説していきます。 ソースコードは記事の最後に掲載していますので、ぜひ最後までご覧くだ…
UnityのTextMeshPro(TMP)には、ユーザーの入力を制御するための便利な仕組みがあります。 そのひとつが TMP_InputValidator です。 TMP_InputValidatorとは? TMP_InputValidator は、TMP_InputField に入力された各文字を検証し、入力を許可するかどうか…
2Dアクションゲームを作っていると、「ジャンプして下から通り抜けられるけど、上に乗るとちゃんと乗れる」みたいな壁(いわゆる“すり抜け床”や“片方向の足場”)が欲しくなること、ありますよね? Unityでは PlatformEffector2D という機能を使うことで、簡…
Unityで Physics.OverlapSphereNonAlloc() を使ってるとき、当たってるはずなのに当たらない、あるいは逆に当たってるはずじゃないのに当たるという現象に遭遇したことはありませんか? これは実はバグではなく、Transformと物理エンジン(Collider)の更新…
はじめに ゲームの中で、鳥や魚の群れの動きを自然に表現したいと思ったことはありませんか? 今回の記事では、Unityを使って「Boidsアルゴリズム」という方法で簡単に群れの動きを作る方法を紹介します。 Boidsアルゴリズムとは? 「Boidsアルゴリズム」と…
Unity 6000 以降のバージョンでは、KeywordEnum を利用して Shader のキーワード(#pragma shader_feature など)を外部 HLSL ファイルに記述する際、通常の #include を使用すると、以前のバージョンでは有効だったキーワードが Unity 6000 では無効(Inval…
UnityでSliderの値を変更した際に、スライダーを離したタイミング(PointerUp)を検知したい場合があります。多くの人はSliderを継承してカスタムクラスを作る方法を考えますが、実はEventTriggerを利用すれば簡単に実装できます。 本記事では、EventTrigger…
検証環境 Unity : 2022.3.55f1 URP: 14.0.11 glTFast: 6.10.1 Packageインポート後の問題 glTFast を Unity Package Manager からインポートした直後、アイコンやロゴのファイルが破損しているエラーが発生 します。 がエクスポート機能には影響がないため無…
はじめに Unity の標準 Slider コンポーネントは、1 つの値を変更することしかできません。しかし、ゲームや UI で「最小値と最大値を設定したい」といった場面は多くあります。 例えば: - オーディオ設定で、特定の周波数帯を選択 - ゲーム内のフィルター…
はじめに UnityのButtonはデフォルトでは1つのGraphicしか設定できません。そのため、ボタンのTransitionをColor Tintに設定した場合、指定した色が適用されるのはtargetGraphicとして設定した1つのみとなります。 例えば、ボタンの背景とテキストの両方を一…
Mediapipe は、Google によって開発された OSS のコンピュータビジョンライブラリです。顔認識、手のトラッキング、ポーズ推定など、リアルタイムでビジュアルタスクを処理するための強力なツールを提供します。 この Mediapipe を Unity で利用するために、…
AR Foundation を使用している際、Graphics 設定を Vulkan に変更してビルドすると、次のようなエラーが表示されます BuildFailedException: You have enabled the Vulkan graphics API, which is not supported by ARCore. このエラーは、以前は AR Foundat…
3Dゲーム開発において、メッシュの体積を求めることは、物理シミュレーションやゲームロジックにおいて重要な要素となります。 本記事では、Unityで四面体分割法(Tetrahedral Decomposition Method)を使用して、メッシュの体積を計算する方法を解説します…
Unityで2Dゲームの開発をしていると、SceneView上にグリッドを表示したくなることがあります。 この記事では、UnityのEditorWindowを利用して、SceneView上にグリッドを表示し、選択したセルをハイライトするカスタムツールを作成します。 機能概要 SceneVie…
Unityでランタイム中にMeshを生成し、MeshColliderに利用しようとした際、 「RayCast」ではヒットしない、またはColliderの当たり判定が効かないといった問題に遭遇したことはありませんか? 今回、その原因と対策方法について紹介します。 発生していた問題…