- Edited
Unityでの半透明処理について
UEのスレがあったのでUnityバージョンの方も気になりました。
Unity-SpineでSpineのデータを表示し、半透明にする際、きれいに描写する方法など良い方法ございますでしょうか。
サンプルデータなどございましたらよろしければ見せていただけますと幸いです。
また、今後、半透明などに対応させる機能の追加予定などございますでしょうか。
こんにちは、UnityでSpineキャラクターをフェードインフェードアウトする方法については、spine-unityランタイムのドキュメントの「透明度と表示順序」セクションの最後に「スケルトンのフェードイン、フェードアウト」という章があり、そちらで紹介されています。
spine-unityランタイムドキュメント: 透明度と表示順序
また、フォーラムの以下の投稿も参考になるかと思います。
Help plz! How do I make my character translucent in Unity?
Unity3D 에서 불투명한 스파인 리소스가 겹치는 문제
申し訳ありませんが、Spineキャラクターのフェードインフェードアウトについて、公式のサンプルシーンはまだ作成できていません。サンプルシーンの作成についてはすでにこちらにissueチケットがあります:
https://github.com/EsotericSoftware/spine-runtimes/issues/1337
サンプルシーンの追加予定はありますが、半透明の描画のための特別なコンポーネントの用意などの予定はありません。
—
Spine側で特に何か特別な処理が必要なわけではないため、ほとんどRenderTexutreの使い方の話になりますが、ご参考までにSpineキャラクターをRenderTextureを利用してシーン内に写すまでの手順だけ簡単にご紹介しておきます。
1.シーン内にスケルトンを配置します。
2.ProjectパネルでRenderTextureを、HierarchyパネルでCameraをそれぞれ作成します。
3.CameraコンポーネントのTargetTexture
に作成したRenderTextureを設定します。Projection
の設定をOrthographic
にして、カメラの位置やサイズなどはスケルトンに合わせて調整してください。
4.ProjectパネルでMaterialを作成し、Main Maps
にRenderTextureを設定します。シェーダーはSpineランタイムのSpine/Sprite/Unlitシェーダー(Blend ModeはStandard Alpha)などを使用するとキャラクターだけを綺麗に表示できます。
5.Hierarchyパネルで任意の平面オブジェクト(Quadなど)を作成してマテリアルを適用します。
以上でRenderTextureを使用して別のGameObjectにスケルトンを表示できるようになっているはずですので、あとはマテリアルの不透明度を変更すればフェードイン/フェードアウトが可能になります。
ただし、この方法は処理負荷が高いため、ドキュメントの方で紹介されているように、スケルトンを徐々にソリッドカラーで染めたり、スケールを小さくするなど、他の方法も検討いただいた方が簡単かつ処理負荷を抑えられる可能性があることにご注意ください。
この回答が参考になれば幸いです。
ご回答ありがとうございます。
アクションゲームの主人公に半透明処理を入れたいと思っており、腕ボーンの位置にエフェクトを出すなどの処理もしたいと思っているため、実態を別に配置するのはちょっと現実的でなくなってしまうため、シェーダーなど別のアプローチを試みようと思います。
でも参考になりました、ご提案ありがとうございます!