1. プロジェクト要件プロジェクトには、光点がパスを通過すると、パス上のすべての位置が点灯するという機能が必要です。 2. 文書の内容この機能は、この偉大な神の消しゴム機能に似ています: https://forum.cocos.org/t/2-0-8/74246 ただし、プロジェクトの要件がたどるパスの周囲にはぼやけた境界があり、中心から端に向かって暗くなっています。 したがって、インターネット上のマスターから借用したシェーダーの例は次のようになります。 私はプロジェクトのニーズを満たすために、偉大な神の肩の上でいくつかの変更を加えました。 3. プロジェクト例以下は私のテスト プロジェクトの例です。 (画質が悪いのは無視してください。画面録画ソフトをインストールするのが面倒なので) 4. プロジェクトコードスライダーポイントライト.ts 定数{ ccクラス、 財産 } = cc._デコレータ; @ccクラス デフォルトクラス Follow_spot をエクスポートし、cc.Component を拡張します { @property(cc.Node) bg: cc.Node = null; マテリアル: cc.Material = null; 中心: 数値[] = [0.5, 0.5]; testArr: 数値[] = []; オンロード() { this.material = this.bg.getComponent(cc.Sprite).getMaterial(0); this.material.setProperty('wh_ratio', this.bg.width / this.bg.height); this.material.setProperty('center', this.center); // js で最も重要な文はこれです。パラメーターは配列の長さ * 配列内のベクトルの次元です。this.material.setProperty('colorArr', new Float32Array(400)); //ここで設定する場合、配列内のベクトル成分を1次元配列に展開する必要があります this.material.setProperty('colorArr', []); this.bg.on(cc.Node.EventType.TOUCH_MOVE、this.touchMoveEvent、this); } タッチ移動イベント(evt: cc.Event.EventTouch) { this.center[0] = evt.getLocation().x / this.bg.width; this.center[1] = 1 - evt.getLocation().y / this.bg.height; コンソールにログ出力します。 this.material.setProperty('center', this.center); (this.testArr.length >= 400) の場合 { this.testArr.shift(); this.testArr.shift(); } this.testArr.push(this.center[0]); this.testArr.push(this.center[1]); // js で最も重要な文はこれです。パラメーターは配列の長さ * 配列内のベクトルの次元です。this.material.setProperty('colorArr', new Float32Array(this.testArr)); //ここで設定する場合、配列内のベクトル成分を 1 次元配列に拡張する必要があります this.material.setProperty('colorArr', this.testArr); } } スライダーポイントライト効果 CCE効果 % { テクニック: -パス: -vert: 対 フラグ: fs ブレンド状態: ターゲット: -ブレンド: 真 ラスタライザー状態: カリングモード: なし プロパティ: テクスチャ: 値: 白 } 比率: 値: 1.78、 エディタ: ツールヒント: 「アスペクト比」 } } ぼかし: 値: 0.35、 エディタ: ツールヒント: 「絞りぼかしレベル」 } } 半径: 値: 0.5、 エディタ: ツールチップ: 「開口半径」 } } 中心: 値: [0.5, 0.5], エディタ: ツールヒント: 「絞り開始点」 } } カラー配列: { 値: [0.5, 0.5, 0.5, 0.5] } } % CCプログラム vs % 高精度の高浮動小数点数。 #include <cc-global> #include <cc-local> vec3 の a_position; vec4 では a_color; vec4 v_color を出力します。 #USE_TEXTUREの場合 vec2 では a_uv0 です。 出力vec2 v_uv0; #終了 void main() { vec4 pos = vec4(a_position, 1); #CC_USE_MODELの場合 pos = cc_matViewProj * cc_matWorld * pos; #それ以外 pos = cc_matViewProj * pos; #終了 #USE_TEXTUREの場合 uv0 は uv1 より小さい。 #終了 色は、v_color と a_color のどちらにも適用されます。 gl_Position = pos; } } % CCプログラム fs % { 高精度の高浮動小数点数。 #include <アルファテスト> vec4 v_color の場合; #USE_TEXTUREの場合 vec2 v_uv0 内; 均一なサンプラー2Dテクスチャ。 #終了 均一なARGS フロート半径; フロートぼかし; vec2 中心; 浮動小数点比率; }; //エフェクト定義uniform Metaball { vec4カラーArr[100]; }; void main() { vec4 o = vec4(1, 1, 1, 0); o *= テクスチャ(テクスチャ、v_uv0); o * = v_color; float 円 = 半径 * 半径; (int i = 0; i < 100; i++) の場合 { 浮動小数点数型カラーX = colorArr[i].x; 浮動小数点数型カラーY = colorArr[i].y; フロートrx = colorX * wh_ratio; フロートry = colorY; 浮動小数点数 = (v_uv0.x * wh_ratio - rx) * (v_uv0.x * wh_ratio - rx) + (v_uv0.y - ry) * (v_uv0.y - ry); oa = スムーズステップ(円、円 - ぼかし、dis) + oa; } gl_FragColor = o; } }% 以上がCocosCreatorでスワイプした位置にテクスチャを表示する方法の詳細です。CocosCreatorの詳細については、123WORDPRESS.COMの他の関連記事にも注目してください。 以下もご興味があるかもしれません:
|
<<: Linux で MySQL 5.7.19 をアンインストールする方法
>>: Dockerは公式Redisイメージをインストールし、パスワード認証を有効にします
1. 遭遇した問題分散プロジェクトの展開プロセスでは、サーバーの再起動後にアプリケーション(データベ...
目次1. プロセスとスレッドの概念2. プロセス管理とは何ですか? 3. プロセス管理の役割4. L...
Java を使用してシステム時間を取得し、それを MySQL データベースに保存した後、時間タイプが...
声明:この記事では、Web ページ制作技術を使用して問題を包括的に解決するという考え方を反映して、W...
導入mysql-utilities ツールセットは、DBA のツールボックスとも言えるさまざまなツー...
コンピュータに初めて MySQL をインストールする場合、通常このエラー メッセージは表示されません...
この記事では、JavaScriptで動的なデジタル時計を実装するための具体的なコードを参考までに紹介...
マウスをホバーすると画像が折りたたまれる効果を実現する CSS 1. 実施のポイント折り畳みは複数の...
この記事では、参考までにVMWare LinuxにMySQL 5.7.13をインストールするチュート...
ヒント1: 集中力を保つ最高のモバイル アプリは、1 つのことを非常にうまく行うことに重点を置いてい...
この記事では、UbuntuシステムでSVNを設定するプロセスを簡単に紹介します。ソースを更新sudo...
目次概要リバースプロキシの役割Nginx リバース プロキシ イントラネット侵入 8081 ポートの...
来学期にMySQLを勉強します。事前に自宅で練習していませんでした。インストールに時間がかかるとは思...
まず、私の日常生活についてお話しします。MySQLの急速なアップデートにより、MySQLはバージョン...
目次序文ベジェ曲線の紹介二次ベジェ曲線3次ベジェ曲線ベジェ曲線計算機能フィッティングアルゴリズム付録...