Open sagat64 opened 9 years ago
sagat64様
お世話になっております。
まず、大前提として、多数のパーツで作られているアニメーションの全体の透明度を変更するには、
……必要があります。
この理由としては、多数のパーツで作成されているアニメーションを、普通に半透明描画をした場合、各パーツ毎に半透明描画が適用されてしまうため、(例えば人体等の場合だと関節部などの)パーツが重なった部分が透けて見えてしまいます(多重半透明描画されてしまう)。 そのため、恐らく想定されている「アニメーション全体が合成された状態で半透明になる」状態を導くことができないため、一度テクスチャにレンダリングして・最終画像を導いてから、それを使用して実際の描画を行うことが必要になります(これはUnityやSS5PU以外でも、一般的な2D/3D描画ではほぼ必ず踏まえるべき前提となります)。
……上記を踏まえた上で、その多重半透明描画が起こる状態を許容できるのであれば、 本GitHub - Wiki - スクリプトリファレンス - Script_SpriteStudio_PartsRoot https://github.com/SpriteStudio/SS5PlayerForUnity/wiki/%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%97%E3%83%88%E3%83%AA%E3%83%95%E3%82%A1%E3%83%AC%E3%83%B3%E3%82%B9:-%E3%82%A2%E3%83%8B%E3%83%A1%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E5%85%A8%E4%BD%93%E5%88%B6%E5%BE%A1 内の ・「表示不透明度変更(使用非推奨)」 : (プロパティ) internal float RateOpacity の解説を参照下さいますようお願い致します。
※ただし、本機能は表題と本文にもあります通り、「本来は別の目的(「インスタンス」アニメーションの再生時の不透明度変更)で使用される変数値ですので、(外部スクリプトから操作して、不透明度を変更する目的での使用は)非推奨です。また、本変数を外部スクリプトから操作した際に、各種障害・動作不良・想定外動作などについては、サポート外になりますこと、あらかじめご了承下さいますよう、お願い申し上げます。
一方、アニメーションの色を一時的に変更したりする場合、上記リファレンス(本GitHub - Wiki - スクリプトリファレンス - Script_SpriteStudio_PartsRoot )中の 「動的オーバーレイ色制御関数群」 「動的オーバーレイ色設定バッファ提供機能群」 の解説を参照くださいますようお願い致します。
注意点としては、本機能は「(通常良く色替えに使用される)メッシュの頂点カラー」ではなく「SpriteStudio5のカラーブレンド」アトリビュートのアニメーション効果を、スクリプトからランタイム上で乗っ取るための機能ですので、頂点カラーの操作とは若干異なる挙動を示します。 また、こちらも、厳密には「アニメーション全体」に効果するわけではなく、「アニメーションで使用している各スプライトパーツに個別に効果する」ため、設定によっては(特に各頂点毎で色の設定を変える関数を使用した場合)想定していない描画がされることがあります。
以上となります。 何卒今後とも宜しくお願い致します。
追伸: 本機能を使用するためには、SS5Player for UnityのバージョンがVer.1.2.3以上である必要があります。
詳しいご説明、ありがとうございます。 初期の動作を実現できました。
今後とも宜しくおねがいいたします。
「ダメージをうけると、だんだん赤くなる」という処理をしたいのですが、 アニメーション全体の、 色や透明度を変更する方法を、ご教示いただけないでしょうか。