はじめに
Unityでアセット「GKC(Game Kit Controller)」を使用時にプレイヤーキャラクターに銃を構えさせると意図しないShaderに変更されてしまう現象の対処法についての備忘録です。
Unityバージョン:2022.3.9f1
GKC(Game Kit Controller)バージョン:3.76
バージョンが異なる場合操作方法やUIに差異がある場合がありますのでご注意ください。
発生現象
プレイヤーキャラクターに銃を構えさせると意図しないShaderに変更されてしまう。
文字だと伝わりにくいので以下に、比較画像を添付。
問題点は明らかで現象発生時にはキャラクターの顔がまともに表示されていません。
実際のゲーム画面では銃を構えた状態で、プレイヤーキャラクターの顔を正面から見ることは出来ないのですが
ちらりと見える横顔で異常はわかるので対処します。
現象発生時の動作
期待動作
対処方法
①ヒエラルキーでプレイヤーキャラクターオブジェクトにアタッチされている「Player Camera」を見つけて選択状態にする。
②インスペクターで「Player Culling System」を見つける。
③以下2点のどちらかを行う
・「Culling System Enabled」のチェックを外す
・「Culling Shader」に任意のShaderをアタッチする(プレイヤーキャラクターの顔が意図した表示になるShaderをアタッチする)

以上の操作で意図しないShaderに変更される現象は解消されます。
今回の原因である「Player Culling System」について
PlayerCullingSystemスクリプトはPlayer Cameraがプレイヤーキャラクターの近くにいるときに、オブジェクトのShaderを変更して視野を確保する「カリングシステム」を使用しています。
そのため「Culling System Enabled」のチェックを外して動作を止めてしまうより、Shaderを変更する方がどちらかと言うと良いのではないかと思います。
もちろん作成しているゲームシステムによって、どちらが良いかは千差万別であるので状況によって使い分けてください。
本記事は以上となります。

