GLSLUnityだと以下のように紹介されている、ルール画像を用いたシーンの遷移エフェクトをCocos2d-xで実装してみたいと思います。tsubakit1.hateblo.jpまずこんな感じのグレースケールのマスク画像を使用します。画面遷移はこんな感じになります。youさんの画像を使用させていただきました。実装&確認環境は以下の通りです。15.9.14Windows10.oO(すいませんモバイルで動作確認してません。動くの精神で...)作ったトランシジョンの使い方というわけでまずは作ったものの使い方です。他のTransitionと同じくTransitionクラスを作成してDirectorに指示します。既定で0.5fが設定されています。大い値を指定するとより急な変化になります。falseと同じ状態になります。transition->getTransitionLayer()->setStlength(0.75f);}たったこれだけです。実装は相当長いですがよろしければお付き合いください。シェーダーの準備まずマスク画像の濃淡を考慮して背景を変化量で透過したりしなかったりするシェーダを準備します。頂点シェーダーC++のコードとして直接記述するので以下のように特殊文字をエスケープしてファイルに保存します。a_texCoord;});いわゆる、何もしない頂点シェーダーです。フラグメントシェーダーフラグメントシェーダーはアルファマスクする版としない版の2種類を以下のように準備します。a));});Cocos2d-xから受け取る"u_percent"が0.0~1.0まで変化するときにマスク画像の白黒の考慮して背景を透過するかしないかを決定するシェーダーになります。アルファマスクがある方は、変化時刻が近くなってくると徐々に変化が開始されるように変化の遅延と目標時刻に到達したときに完全にマスクがされるように調整しています。シェーダーをC++コードから利用する上記シェーダー文字列をC++側から使用するため以下のコードを記述します。PatternTransitionFragAlpha;NS_CC_ENDで、実体の展開は#includeでやります。includeを只の文字列展開マクロ扱いは久しぶりです。存在を忘れきっていました。最終的にTransitionとして利用しますが、そこで使用するクラスをPatternTransitionLayerとして事前に作成しておきます。先述のシェーダーをシーン上に配置したマスク画像に設定して処理を開始するためのクラスを作成します。アルファトランジションするかどうかの指定。上記ヘッダーの実装は以下の通りです。value);}"init"でシェーダーを設定して"beginTransition"で演出を開始、"update"で時間の変化をシェーダーに"u_percent"という共有変数で伝えています。上記をCocos2d-xの演出付きのシーン遷移に組み込みます。ヘッダー"cocos2d::TransitionScene"クラスを継承して"onEnter"と"onExit"でそれぞれ演出の開始、終了を記述するようです。仕組みを理解してないですがまぁたぶんこんな感じで大丈夫だと思います。パターン画像を指定した画面遷移を実行します。nullptr;};実装onEnterで演出をすべて記述します。フェードアウトが終了したら"TransitionScene::hideOutShowIn"を呼び出してCocos2d-xに通知を行うと次のシーンに自動で遷移して、フェードインの演出が始まります。フェードインが終了したときには"TransitionScene::finish"を呼び出すと"onExit"が呼び出されるのでそこで演出の破棄を行います。false);}Cocos2d-xのフレームワークにゆるく乗っていくだけなので仕組みさえわかれば簡単かと思います。そのほかのコード上記コード中で使用している未説明のコードは以下の通りです。CRTPイデオムを使用したCreateFuncの記述の簡易化になります。http://melpon.org/blog/cocos2dx-create-funcCommonFunction.hppについてCommonFunction.hppにはグローバル汎用処理を記述しています。上記コード中で使用したメソッドの実装は以下の通りです。}}今回はコードが以上に長くなってしまいましたがこれでUnityと同じような演出が実行できます。全部コピペで動くはずなのでよかったら使ってみてください。今回ググりまくってしまいました。ありがとうございます。シェーダー沼は深そうでした。nyagasukiwww.slideshare.netsecondflush2.blog.fc2.comglslsandbox.com長くなりましたが以上です。»Profile受託ソフト会社員でWin系業務屋。趣味でCocos2d-x/C++を触っています。etc...主に受託・開発ネタ、Windowsの事、Srellaris、ゲーム制作の進捗の事を喋ります。4.0がリリースされたみたいCocos2d-xをやめてUnityに移行した話@2019冬C#のDateTimeとC++のtime_tを相互変換するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。