2014年10月
4日(クラウドモデリングのパーティクルシステム(2) )から会話を続けます。
このパートでは:- シューターの死を追加します(結局、爆発を殺します)
- エミッタの設定で遊ぶ-私は叙事詩が欲しい
シューターの死を追加します(結局、爆発を殺します)「矢を殺す」ためには、多くの異なる方法があります。 最も一般的なものを選択します-特定の「健康の量」をゼロ以下に減らします。 しかし、何かを減らすためには、まずこれにヘルスを提供する必要があります-(
HealthInitializer )。
HealthInitializerを使用したパーティクルの初期化中に、新しいユーザー変数
「health」が Particle.dictionaryクラスのプロパティに追加されます
package waylines.initializers { import org.flintparticles.common.particles.Particle; import org.flintparticles.common.emitters.Emitter; import org.flintparticles.common.initializers.InitializerBase; public class HealthInitializer extends InitializerBase { private var health:int; public function HealthInitializer(health:int=100) { this.health = health; } override public function initialize( emitter : Emitter, particle : Particle ) : void { particle.dictionary["health"] = health; } } }
パーティクルはヘルスを獲得し、今では減らすことができます。
メインコードの変更:
- 新しいプロパティを初期化する
- 親メソッドMainWaylines_2.explosionを拡張します
override protected function setup(e:Event=null):void { super.setup(e);
override protected function explosion(e:MouseEvent):void { super.explosion(e); ... var particles:Array = emitterExplosion.particlesArray; var length:int = particles.length; for(var r:int=0; r<length; r++) { ... if(Point.distance(explPoint, particlePoint) < explRadius) { particleClone = Particle2D(particles[r]); particleClone.angVelocity = -5 + Math.random() * 10; particleClone.lifetime += 1;
すべてが機能します。 彼が負傷したのは誰で、誰を殺したのかは明らかではありません。
ズボンの矢印の色の区別を追加できます。
MainWaylines_3.explosion()に数行を挿入します:
if(particle.dictionary["health"] <= 0) {
エミッタの設定で遊ぶ-私は叙事詩が欲しい粒子ライブラリーは、アプリケーションでの作業の基礎として使用され、物理法則(質量、重力など)で動作します。 はい、確かに独自のアドオンを作成する必要があります-これは非常に望ましくありません(購入した子供用ブロックのようにプログラミングで遊んで、旋盤で磨かないでください)。
したがって:
- 必要なだけエミッターを遅くします(100倍)
- 加速パラメータを増やしました(10倍) 新しいMinimumDistance(7、6000)
- 「反重力」のパワーを増加(10倍) 新しい反重力(emitterWaylinesForMonsterArrows、-4000000)
override protected function setup(e:Event=null):void { super.setup(e);
その結果、潜在的な敵は、マップに対する相対的なサイズに比例して、はるかにゆっくりと動き始めました(たとえば、ゴブリンやゾンビの場合)。 マップ自体をスケーリングすることができ、粒子の座標はより大きな(より小さな)画面に外挿されます。

まあ、実際、これは私が共有したかったものです-パーティクルシステムを使用した群衆モデリングの原理。 その結果、タワーディフェンスのほぼ完成したプロトタイプモデル(MVC)が完成しました。 もちろん、このような粒子密度では60 fpsを達成することはできません...しかし-最適化することがたくさんあります(前のパートで述べました)、フリーレンダリングをねじ込みます(スターリング、Away3d)
コードは
google codeで入手でき
ます 。 クラスMainWaylines_3
PS:時間があります、私は間違いなくねじ込みレンダリングを表示します