SpriteStudio / SS5PlayerForUnity

OPTPiX SpriteStudio 5 Player for Unity
http://www.webtech.co.jp/spritestudio/
MIT License
39 stars 15 forks source link

Ver.1.2.3以降 色や透明度を変更する方法 #125

Open sagat64 opened 9 years ago

sagat64 commented 9 years ago

「ダメージをうけると、だんだん赤くなる」という処理をしたいのですが、 アニメーション全体の、 色や透明度を変更する方法を、ご教示いただけないでしょうか。

MasamiYitsuse commented 9 years ago

sagat64様

お世話になっております。


まず、大前提として、多数のパーツで作られているアニメーションの全体の透明度を変更するには、

  1. 一度アニメーションをテクスチャにレンダリングする(本機能はUnityのPro版でしか搭載されておりません)。
  2. 上記1で作成したテクスチャを使用して、別途にUnityのメッシュや2D機能で表示する。その際に透明度を設定する。

……必要があります。

この理由としては、多数のパーツで作成されているアニメーションを、普通に半透明描画をした場合、各パーツ毎に半透明描画が適用されてしまうため、(例えば人体等の場合だと関節部などの)パーツが重なった部分が透けて見えてしまいます(多重半透明描画されてしまう)。 そのため、恐らく想定されている「アニメーション全体が合成された状態で半透明になる」状態を導くことができないため、一度テクスチャにレンダリングして・最終画像を導いてから、それを使用して実際の描画を行うことが必要になります(これは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以上である必要があります。

sagat64 commented 9 years ago

詳しいご説明、ありがとうございます。 初期の動作を実現できました。

今後とも宜しくおねがいいたします。