рдХрдг рдореЙрдбрд▓рд┐рдВрдЧ рдореЗрдВ рдХрдг рдкреНрд░рдгрд╛рд▓реА (2)

рд╣рдо 04/07/2014 ( рднреАрдбрд╝ рдореЙрдбрд▓рд┐рдВрдЧ рдореЗрдВ рдХрдг рдкреНрд░рдгрд╛рд▓реА ) рд╕реЗ рдмрд╛рддрдЪреАрдд рдЬрд╛рд░реА рд░рдЦрддреЗ рд╣реИрдВред

рдЗрд╕ рднрд╛рдЧ рдореЗрдВ рдореИрдВ рдЬреЛрдбрд╝рддрд╛ рд╣реВрдВ:
  1. рдзреАрдореЗ рдЕрдХреНрд╖рд░ (рдпреЗ рдмрдбрд╝реЗ рддреАрд░ рд╣реЛрдВрдЧреЗ)
  2. рдЪрд╛рд░реЛрдВ рдУрд░ рдзреАрдореА рдЧрддрд┐ рд╕реЗ рддреАрд░
  3. рд╡рд┐рд╕реНрдлреЛрдЯ (рд╢рд░реАрд░ рдХреЗ рдмрд┐рдЦрд░рдиреЗ рдХреЗ рд╕рд╛рде)


рдХреЛрдб рд▓рд┐рдЦрдиреЗ рдХреА рд╢реИрд▓реА рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдПрдХ рдЫреЛрдЯреА рдЯрд┐рдкреНрдкрдгреА (рдкрд╣рд▓реЗ рднрд╛рдЧ рдХреЗ рдкрд╛рдардХреЛрдВ рдХреЗ рд▓рд┐рдП):


рдзреАрдореЗ рдЪрд░рд┐рддреНрд░

рд╣рдо MainWaylines_2.setupEmitterForMonsterArrows () рд╡рд┐рдзрд┐ рд▓рд┐рдЦрддреЗ рд╣реИрдВред рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдкреВрд░реНрд╡ MainWaylines_1.setupEmitter () рдХреА рдХреЙрдкреА-рдкреЗрд╕реНрдЯ рд╣реИ ред рдореИрдВрдиреЗ рд╕рд┐рд░реНрдл рдкреБрд░рд╛рдиреА рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреЛ рд╣рдЯрд╛ рджрд┐рдпрд╛ рд╣реИ, рдФрд░ рдЙрдиреНрд╣реЗрдВ рдХреЗрд╡рд▓ рд╡рд╣реАрдВ рдЫреЛрдбрд╝ рджрд┐рдпрд╛ рд╣реИ рдЬрд╣рд╛рдВ рдкрд░рд┐рд╡рд░реНрддрди рд╣реИрдВред

protected function setupEmitterForMonsterArrows():void { var emitter:Emitter2D = new Emitter2D(); //   -   1     emitter.counter = new Steady(1); var wayline:Wayline = _waylines[0]; emitter.addInitializer( new Position( new LineZone( new Point(wayline.x - wayline.radius*Math.cos(wayline.rotation), wayline.y - wayline.radius*Math.sin(wayline.rotation)), new Point(wayline.x + wayline.radius*Math.cos(wayline.rotation), wayline.y + wayline.radius*Math.sin(wayline.rotation)) ) ) ); // ,        //    emitter.addInitializer( new ImageClass( Arrow, [10] ) ); emitter.addAction( new DeathZone( new RectangleZone( -30, -30, stage.stageWidth+60, stage.stageHeight + 60 ), true ) ); emitter.addAction( new Move() ); emitter.addAction( new RotateToDirection() ); //      ,      , //        action // emitter.addAction( new MinimumDistance( 7, 600 ) ); //    emitter.addAction( new ActionResistance(.1)); emitter.addAction( new FollowWaylines(_waylines) ); var renderer:DisplayObjectRenderer = new DisplayObjectRenderer(); addChild( renderer ); renderer.addEmitter( emitter ); //   emitterWaylinesForMonsterArrows = emitter; emitterWaylinesForMonsterArrows.start(); } 


рдЕрдм рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░реЗрдВ рдФрд░ MainWaylines_2.setup рдЪрд▓рд╛рдПрдВ ()

 override protected function setup(e:Event=null):void { super.setup(); //        setupEmitterForMonsterArrows(); } 


рд╣рдореЗрдВ рдЗрд╕ рддрд░рд╣ рдХреА рдПрдХ рддрд╕реНрд╡реАрд░ рдорд┐рд▓рддреА рд╣реИред рдмрдбрд╝реЗ рддреАрд░ рдЫреЛрдЯреЗ рд▓реЛрдЧреЛрдВ рдХреЗ рд╕рд╛рде рд╡рд┐рд▓рдп рд╣реЛрддреЗ рд╣реИрдВ - рд╕рдорд╛рдирд╛рдВрддрд░ рдореЗрдВ рдореМрдЬреВрдж рд╣реИрдВ



рдЪрд╛рд░реЛрдВ рдУрд░ рдзреАрдореА рдЧрддрд┐ рд╕реЗ рддреАрд░

рдЫреЛрдЯреА рдЪреАрдЬреЛрдВ рдХреЗ рд▓рд┐рдП рдмрдбрд╝реЗ рддреАрд░ рдХреЗ рдЪрд╛рд░реЛрдВ рдУрд░ рдЬрд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдЙрдиреНрд╣реЗрдВ рдПрдХ рдХрдорд╛рдВрдб рджреЗрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред MainWaylines_2.setup () рдореЗрдВ рдПрдХ рдкрдВрдХреНрддрд┐ рдЬреЛрдбрд╝реЗрдВ, рдЬрд╣рд╛рдВ рдПрдВрдЯреАрдЧреНрд░реЗрд╡рд┐рдЯрд╕ рдХрдг рдкреНрд░рдгрд╛рд▓реА рдкреБрд╕реНрддрдХрд╛рд▓рдп (рд╢рд╛рдВрдд рдкреБрд╕реНрддрдХрд╛рд▓рдп, рд╕рд╣реА?) рд╕реЗ рдПрдХ рдФрд░ рдорд╛рдирдХ рдХрд╛рд░реНрд░рд╡рд╛рдИ рд╣реИред

 override protected function setup(e:Event=null):void { super.setup(); //        setupEmitterForMonsterArrows(); //   action   "  " //  (!)   ,      -       emitterWaylines.addAction( new Antigravities(emitterWaylinesForMonsterArrows, -400000) ); } 


рдФрд░ рдкрд░рд┐рдгрд╛рдо рдЗрд╕ рдЪрд┐рддреНрд░ рдХреА рддрд░рд╣ рджрд┐рдЦрд╛рдИ рджреЗрдиреЗ рд▓рдЧрддрд╛ рд╣реИред рдЫреЛрдЯреЗ рддреАрд░ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдмрдбрд╝реЗ рд▓реЛрдЧреЛрдВ рдХреЛ рдврдВрдХ рд░рд╣реЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЙрдирдореЗрдВ рд╕реЗ рдмрд╣реБрдд рдкреАрдЫреЗ рдЬрдорд╛ рд╣реЛ рдЧрдП рд╣реИрдВред рдпреЗ рдЯреНрд░реИрдлрд┐рдХ рдЬрд╛рдо рдмрджрд╕реВрд░рдд рд▓рдЧрддреЗ рд╣реИрдВред



рдпрд╣ рдЕрдЧрд▓реЗ "рд╕рдВрдШрд░реНрд╖" рдХреЗ рдХрд╛рд░рдг рд╣реИред рдПрдВрдЯреАрдЧреНрд░реИрд╡рд┐рдЯрд┐рдЯреА рдЫреЛрдЯреЗ рддреАрд░ рдХреЛ рдмрдбрд╝реЗ рд▓реЛрдЧреЛрдВ рдХреЗ рдЪрд╛рд░реЛрдВ рдУрд░ рдореЛрдбрд╝ рджреЗрддреА рд╣реИред FollowWaylines рдЙрдиреНрд╣реЗрдВ рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ рдЖрдЧреЗ рдмрдврд╝рд╛рддреА рд╣реИ - рдкреНрд░рддреНрдпреЗрдХ рддреАрд░ рдорд╛рд░реНрдЧ рдХреЗ рд▓рдВрдмрд╡рдд рдмрд┐рдВрджреБ рдкрд░ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдмрд┐рдВрджреБ рдкрд░ рдЬрд╛рддрд╛ рд╣реИ, рдпрд╛рдж рд╣реИ? рдЫреЛрдЯреЗ рддреАрд░ рдХреЗрд╡рд▓ рд╕рдордп рдХреЗ рд╕рд╛рде рдмрдбрд╝реЗ рдХреЛ рдЧреЛрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдордп рдирд╣реАрдВ рд╣реИ рдЗрд╕ рддрдереНрдп рдХреЗ рдХрд╛рд░рдг рдХрд┐ рд╡реЗ рд░рд╛рд╕реНрддреЗ рдореЗрдВ рдиреЛрдбрд▓ рдмрд┐рдВрджреБрдУрдВ рдкрд░ рдмрд╣реБрдд рддреЗрдЬреА рд╕реЗ рдЖ рд░рд╣реЗ рд╣реИрдВред рд╕рдорд╛рдзрд╛рдиреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ (рдФрд░ рдореБрдЭреЗ рдпрд╣ рд╕рдмрд╕реЗ рд╕рд░рд▓ рд▓рдЧрддрд╛ рд╣реИ) рдкрде рдЦрдВрдбреЛрдВ (рдорд╛рд░реНрдЧ рдиреЛрдбреНрд╕ рдХреЗ рдмреАрдЪ рдХреА рджреВрд░реА) рдХреА рд▓рдВрдмрд╛рдИ рдмрдврд╝рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИред

рдПрдХ рдкрдВрдХреНрддрд┐ рдХреЗ рд▓рд┐рдП MainWaylines_2.setupWaylines () рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦреЗрдВ

 override protected function setupWaylines():void { _waylines = []; var w:Number = stage.stageWidth; var h:Number = stage.stageHeight; var points:Array = [new Point(-9,h*.4), new Point(w*.3,h*.4), new Point(w*.5,h*.1), new Point(w*.8,h*.1), new Point(w*.8,h*.9), new Point(w*.5, h*.9), new Point(w*.3, h*.8), new Point(-40, h*.8)]; var fitline:FitLine = new FitLine(points); var path:Path = new Path(fitline.fitPoints); /* *   .  40,  25 * *   ,    ,           * ,   ,         */ var step:Number = path.length / 25; var strength:Number = 100; for(var i:int=0; i<path.length; i+=step) { var segmentLength:int = 60;//*Math.random()+10; var pathpoint:PathPoint = path.getPathPoint(i); var wayline:Wayline = new Wayline(pathpoint.x, pathpoint.y, segmentLength, pathpoint.rotation-Math.PI/2, strength); _waylines.push(wayline); } } 


рдФрд░ рдлрд┐рд░ рднреА, рдЪреВрдВрдХрд┐ рдмрдбрд╝реЗ рддреАрд░ рдЫреЛрдЯреЗ рд╡рд╛рд▓реЗ (60 рдЧреБрдирд╛) рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдмрд╣реБрдд рдЫреЛрдЯреЗ рд╣реЛрддреЗ рд╣реИрдВ, рдЙрдиреНрд╣реЗрдВ рдПрдХ рд╕рдВрдХреАрд░реНрдг рдореЗрд▓реЗрд╡реЗ (рдмрдбрд╝реЗ рддреАрд░ рдХреЗ рд▓рд┐рдП EMITTER рдЪреМрдбрд╝рд╛рдИ рдХрдо) рдХреЗ рд╕рд╛рде рд▓реЙрдиреНрдЪ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдФрд░ рдЗрд╕ рддрд░рд╣ рдЫреЛрдЯреЗ рддреАрд░ рдЙрдиреНрд╣реЗрдВ рдХрд┐рдирд╛рд░реЗ рд╕реЗ рдЕрдзрд┐рдХ рд╕реНрд╡рддрдВрддреНрд░ рд░реВрдк рд╕реЗ рдмрд╛рдпрдкрд╛рд╕ рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рджреЗрддреЗ рд╣реИрдВред

рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ MainWaylines_2.setupEmitterForMonsterArrows () , рдПрдорд┐рдЯрд░ рдХреЗ рд▓рд╛рдЗрдирдЬрд╝реЛрди рдХреЛ 20 рд╕реЗ рдХрдо рдХрд░рдирд╛ (рдкреНрд░рддреНрдпреЗрдХ рдкрдХреНрд╖ рдкрд░ 10 рдкрд┐рдХреНрд╕реЗрд▓)

 emitter.addInitializer( new Position( new LineZone( new Point(wayline.x - (wayline.radius-10)*Math.cos(wayline.rotation), wayline.y - (wayline.radius-10)*Math.sin(wayline.rotation)), new Point(wayline.x + (wayline.radius-10)*Math.cos(wayline.rotation), wayline.y + (wayline.radius-10)*Math.sin(wayline.rotation)) ) ) ); 


рдЕрдм рдмрдбрд╝реЗ рддреАрд░ рдХреЗ рдкреАрдЫреЗ рдЯреНрд░реИрдлрд┐рдХ рдЬрд╛рдо рдмрд╣реБрдд рдЫреЛрдЯрд╛ рд╣реИ



рд╡рд┐рд╕реНрдлреЛрдЯ (рд╢рд░реАрд░ рдХреЗ рдмрд┐рдЦрд░рдиреЗ рдХреЗ рд╕рд╛рде)


рдирд┐рдХрд╛рдпреЛрдВ рдХреЗ рдмрд┐рдЦрд░рдиреЗ рдХреЗ рдПрдиреАрдореЗрд╢рди рдХреЗ рд▓рд┐рдП - рдПрдХ рдирдпрд╛ рдПрдорд┐рдЯрд░ рдмрдирд╛рдПрдВ

 protected function setupEmitterForExplosion():void { var emitter:Emitter2D = new Emitter2D(); //    -    emitter.addAction( new Move() ); //      ,       -     emitter.addAction( new SpeedLimit(40)); //      -  emitter.addAction( new Friction(40) ); //    -   (      ) emitter.addAction( new DeathZone( new RectangleZone( -30, -10, stage.stageWidth+40, stage.stageHeight + 20 ), true ) ); //   var renderer:DisplayObjectRenderer = new DisplayObjectRenderer(); addChild( renderer ); renderer.addEmitter( emitter ); //   emitterExplosion = emitter; emitterExplosion.start(); } 


рд╣рдо MainEaylines_2.setup () рдореЗрдВ MouseEvent.MOUSE_DOWN рдХреА рд╕рджрд╕реНрдпрддрд╛ рд▓реЗрддреЗ рд╣реИрдВ - рд╣рдо рдЗрди рдШрдЯрдирд╛рдУрдВ рдкрд░ рд╡рд┐рд╕реНрдлреЛрдЯ рдЙрддреНрдкрдиреНрди рдХрд░реЗрдВрдЧреЗ

 stage.addEventListener(MouseEvent.MOUSE_DOWN, handleMouseDown); 


рд╣рдо рд╡рд┐рд╕реНрдлреЛрдЯ (рдИ) рдХреЛ рддреБрд░рдВрдд рдХреНрдпреЛрдВ рдирд╣реАрдВ рдХрд╣рддреЗ рд╣реИрдВ ; ? рд╡рд╣рд╛рдВ рдЖрдк рд╡рд┐рд╕реНрдлреЛрдЯ рдХреЗ рдПрдиреАрдореЗрд╢рди рдХреЛ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдХреЗ рдмрд╛рдж рдкрд░рд┐рдгрд╛рдо рдЙрддреНрдкрдиреНрди рд╣реЛрдВрдЧреЗ

 private function handleMouseDown(e:MouseEvent):void { explosion(e); } 


рдЕрдм рдзрдорд╛рдХрд╛ рд╣реА рд╣реБрдЖ

 private function explosion(e:MouseEvent):void { if(emitterWaylines == null){ return; } if(emitterExplosion == null){ return; } //   var explRadius:int = 30; //      // (        ,   dot-     ) var particleOrigin:Particle2D; var particleClone:Particle2D; var particlePoint:Point = new Point(); //    ... var explPoint:Point = new Point(e.stageX, e.stageY); //     var particles:Array = emitterWaylines.particlesArray; var length:int = particles.length; //      for(var p:int=0; p<length; p++) { particleOrigin = particles[p]; particlePoint.x = particleOrigin.x; particlePoint.y = particleOrigin.y; // ,        if(Point.distance(explPoint, particlePoint) < explRadius) { /* *  ,    -         *       -    */ particleClone = particleOrigin.clone(emitterExplosion.particleFactory) as Particle2D; particleClone.angVelocity = -5 + Math.random() * 10; /* *    Arrow ( ) -    ActionScript  ,      * !      , *         emitterWaylines   * -       renderer.removeChild() * *    .        . *      ( , )   , *       ( -      ) */ particleClone.image = new Arrow(4, 0xff0000); //       emitterExplosion.addParticle(particleClone); //      particleOrigin.isDead = true; } } /* *  action    * *   , ,   -     , *    ,         (.     ). * *    -     :       * *  ,        ,    ... *   -     */ var explosion:Explosion = new Explosion(10000, explPoint.x, explPoint.y, 100); emitterExplosion.addAction(explosion); /* *          -        *       Emitter2D.update(.2) -      */ //         emitterExplosion.update(0.2); //  action Explosion -     emitterExplosion.removeAction(explosion); } 


рдЪрд▓рд╛рдПрдБред рдХреБрдЫ рдХреНрд▓рд┐рдХреЛрдВ рдХреЗ рдмрд╛рдж рд╣рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЪрд┐рддреНрд░ рдорд┐рд▓рддрд╛ рд╣реИ - рд▓рд╛рд▓ рд╡рд╛рд▓реЗ рдЕрдирд┐рдпрдВрддреНрд░рд┐рдд рд░реВрдк рд╕реЗ рдЬрдорд╛ рд╣реЛрддреЗ рд╣реИрдВ, рдФрд░ рдлрд┐рд░ рднреА рдЙрдиреНрд╣реЗрдВ рд╡рд╛рдкрд╕ рдзрд╛рд░рд╛ рдореЗрдВ рд▓реМрдЯрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред



рдЖрд╡рд╢реНрдпрдХ рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХрд╛ рд╕рд╛рд░ рд╕рд░рд▓ рд╣реИ - рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рд╕рдордп рдХреЗ рдмрд╛рдж, рдХрдг рдХреЛ тАЛтАЛрдкрд┐рдЫрд▓реА рдзрд╛рд░рд╛ рдореЗрдВ "рд╡рд╛рдкрд╕" рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИред
1. рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, MainWaylines_2.setupEmitterForExplosion () рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рдХрд░реЗрдВ:
 protected function setupEmitterForExplosion():void { var emitter:Emitter2D = new Emitter2D(); ... //  action  "" .   ,  . // .    ,       emitterExplosion.addAction( new Age() ); ... //   "   ",      ""  emitterExplosion.addEventListener(ParticleEvent.PARTICLE_DEAD, handleParticleDeadFromEmitterExplosion); } 


2. рдЕрдм MainWaylines_2.explosion () рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рдЬреЛрдбрд╝реЗрдВ

 private function explosion(e:MouseEvent):void { ... //      for(var p:int=0; p<length; p++) { ... // ,        if(Point.distance(explPoint, particlePoint) < explRadius) { particleClone = particleOrigin.clone(emitterExplosion.particleFactory) as Particle2D; particleClone.angVelocity = -5 + Math.random() * 10; /* * action Age()   ,     *        ,  "" *           */ particleClone.lifetime = 3; particleClone.age = 0; ... } } ... } 


рдЪрд▓рд╛рдПрдБред рд╣рдо рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВред



рдкрд░рд┐рдгрд╛рдо:
  1. рджреЛ рдкреНрд░рдХрд╛рд░ рдХреА рдЗрдХрд╛рдЗрдпрд╛рдБ: рдЫреЛрдЯреА рдФрд░ рдмрдбрд╝реА
  2. рдЫреЛрдЯреА рдЗрдХрд╛рдЗрдпрд╛рдВ рдмрдбрд╝реА рд╣реЛрддреА рд╣реИрдВ
  3. рд╡рд┐рд╕реНрдлреЛрдЯ рдЫреЛрдЯреА рдЗрдХрд╛рдЗрдпреЛрдВ рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░рддреЗ рд╣реИрдВ (рдЗрд╕реЗ рдЫрд░реНрд░реЗ рд╣реЛрдиреЗ рджреЗрдВ, рдЬреЛ рдЯреИрдВрдХреЛрдВ рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ - рдмрдбрд╝реЗ рддреАрд░)
  4. рдЫреЛрдЯреЗ рд▓реЛрдЧ "рдХреИрдВрдЯрд╕" рд╕реЗ рдЙрдмрд░рдиреЗ рдХреЗ рдмрд╛рдж рдлрд┐рд░ рд╕реЗ рд╕рд╛рдорд╛рдиреНрдп рдзрд╛рд░рд╛ рдореЗрдВ рд▓реМрдЯ рдЖрддреЗ рд╣реИрдВ


рд╕реНрдкрд╖реНрдЯ рд╡рд┐рдкрдХреНрд╖
  1. рдЧреИрд░-рдорд╣рд╛рдХрд╛рд╡реНрдп рдЙрдЪреНрдЪ рдЧрддрд┐ рд╢реВрдЯрд░
  2. рдХрдо рдПрдлрдкреАрдПрд╕


рдпрджрд┐ рдЕрдиреБрдЪреНрдЫреЗрдж 1 рдХреЗ рд╕рд╛рде рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдирд╛ рд╣реИред рдЖрдк рдПрдорд┐рдЯрд░ рдХреА рд╕реЗрдЯрд┐рдВрдЧ рдХреЗ рд╕рд╛рде рдЦреЗрд▓рдирд╛ рдЬрд╛рд░реА рд░рдЦ рд╕рдХрддреЗ рд╣реИрдВ (рдФрд░ рдХрдг рдкреНрд░рдгрд╛рд▓реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдореЗрд░реА рд╡рд░реНрддрдорд╛рди рд╡рд┐рдзрд┐ рд╕рдмрд╕реЗ рд╕рд╣реА рдирд╣реАрдВ рд╣реИ), рдлрд┐рд░ рдмрд┐рдВрджреБ 2 ( рдПрдлрдкреАрдПрд╕ ) рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреНрдпрд╛? рдХреНрдпрд╛ рдЕрдиреБрдХреВрд▓рди рдХреА рдХреЛрдИ рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ? рдЖрдЦрд┐рд░рдХрд╛рд░, рдЖрдкрдХреЛ рдЕрднреА рднреА рд╕рд╛рдорд╛рдиреНрдп рдЧреНрд░рд╛рдлрд┐рдХреНрд╕, рдЧреЗрдо рдХреЛрдб рдХрд╛ рдПрдХ рдЧреБрдЪреНрдЫрд╛ рдЬрдХрдбрд╝рдирд╛ рд╣реЛрдЧрд╛ ...

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЕрдиреБрдХреВрд▓рди рдХреЗ рд▓рд┐рдП рдХреНрд╖рдорддрд╛ рд╣реИ, рдФрд░ рд╡рд┐рдЪрд╛рд░рдгреАрдп рд╣реИ
  1. рдЫреЛрдЯреЗ рддреАрд░ рдХреЗ рдмреАрдЪ рдЯрдХрд░рд╛рд╡ рдкрд░ рдкреНрд░рддрд┐рдмрдВрдз, рдореМрдЬреВрджрд╛ рдкреИрдорд╛рдиреЗ рдкрд░ - рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╢реБрджреНрдз рд╕рдирдХ - рдЖрдк 2-5 рдмрд╛рд░ рдЗрдХрд╛рдЗрдпреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдмрдврд╝рд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рдЖрдк рдкрд░рд┐рдгрд╛рдореА рдЧрдбрд╝рдмрдбрд╝реА рдореЗрдВ рдмрд┐рд▓реНрдХреБрд▓ рднреА рдХреБрдЫ рдирд╣реАрдВ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ (рдФрд░ рдпрджрд┐ рдлрд╝реАрд▓реНрдб рдкрд░ рдкреНрд░рдХреНрд╖реЗрдкрдг рдКрдкрд░-рдиреАрдЪреЗ рдирд╣реАрдВ рд╣реИ , рдЬреИрд╕рд╛ рдХрд┐ рдЕрднреА рд╣реИ, рд▓реЗрдХрд┐рди рдЖрдЗрд╕реЛрдореЗрдЯреНрд░рд┐рдХ?) рд╣реИред рдФрд░ рдХреЛрдИ "рдкреВрд░реНрдг рдЧрдбрд╝рдмрдбрд╝" рдирд╣реАрдВ рд╣реЛрдЧрд╛ - рдХреНрдпреЛрдВрдХрд┐ рдЫреЛрдЯреЗ рддреАрд░, рдордд рднреВрд▓рдирд╛, рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдорд╛рд░реНрдЧреЛрдВ рдХреЗ рд╕рд╛рде рдЖрдЧреЗ рдмрдврд╝реЗрдВ (рдкреНрд░рддреНрдпреЗрдХ рд╕реНрдкрд░реНрд╢рд░реЗрдЦрд╛ рдХреЗ рд▓рдВрдмрд╡рдд рдХреЗ рд╕рд╛рдкреЗрдХреНрд╖ рдЕрдкрдиреА рд╕реНрдерд┐рддрд┐ рд╣реИ)ред рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХреЛ рдЕрдХреНрд╖рдо рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ рдиреНрдпреВрдирддрдо рдЕрдВрддрд░ , рдЬреЛ рдЖрдкрд╕реА рдЯрдХрд░рд╛рд╡ рдХреЛ рд░реЛрдХрддрд╛ рд╣реИ - рдЖрдкрдХреЛ рдмрд╣реБрдд рдЕрдВрддрд░ рдирд╣реАрдВ рджрд┐рдЦрд╛рдИ рджреЗрдЧрд╛ (рдХреЗрд╡рд▓ рдмрдбрд╝реЗ рд▓реЛрдЧреЛрдВ рдХреЛ рдУрд╡рд░рдЯреЗрдХ рдХрд░рддреЗ рд╕рдордп)ред рдФрд░ рдкреНрд░рджрд░реНрд╢рди рд▓рд╛рдн рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ (рдЖрдк рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХреЛрдб рдХреЛ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдХрд┐рддрдиреЗ рдЧрдгрдирд╛ рд╣реИрдВ)ред
  2. рдмрд╕ "рджреЗрд╢реА" рд░реЗрдВрдбрд░ рдХреЛ рдмрдВрдж рдХрд░ рджрд┐рдпрд╛ - рдФрд░ рдПрдлрдкреАрдПрд╕ рддреБрд░рдВрдд рдбреЗрдврд╝ рдЧреБрдирд╛ (рдФрд░ рдЕрдЧрд░ рд╕реНрдЯрд░реНрд▓рд┐рдВрдЧ рдкрд░) рд╕реЗ рдЕрдзрд┐рдХ рдмрдврд╝ рдЧрдпрд╛ред


рдЕрдм рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреА рдЬрдЯрд┐рд▓рддрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ - рдХрдг рдкреНрд░рдгрд╛рд▓реА рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ред
рдореБрдЭреЗ рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдпрд╣ рдмрд╣реБрдд рдЬрдЯрд┐рд▓ рдирд╣реАрдВ рд╣реЛрдЧрд╛ - рдЙрддреНрд╕рд░реНрдЬрдХреЛрдВ рдХреЗ рдвреЗрд░, рдЙрдирдХреЗ рд▓рд┐рдП рд╕реЗрдЯрд┐рдВрдЧреНрд╕, рдЙрдирдХреЗ рдмреАрдЪ рдХрдгреЛрдВ рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдирд╛ ...
рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдбреЗрдЯрд╛-рдЙрдиреНрдореБрдЦ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЗ рд╕рд╛рде, рд╕реИрдХрдбрд╝реЛрдВ рдХрдгреЛрдВ рдХреЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд╛ рд╕рдВрдкреВрд░реНрдг рддрд░реНрдХ рдЙрддреНрд╕рд░реНрдЬрдХреЛрдВ рдореЗрдВ рдареАрдХ рд╣реИред рдФрд░ рдЕрдм рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЙрдирдореЗрдВ рд╕реЗ рдХреЗрд╡рд▓ рддреАрди рд╣реИрдВ (рдЬрд┐рдирдореЗрдВ рд╕реЗ рдЫреЛрдЯреЗ рдФрд░ рдмрдбрд╝реЗ рдирд┐рд╢рд╛рдиреЗрдмрд╛рдЬреЛрдВ рдХреЗ рд▓рд┐рдП рдЖрдо рддреМрд░ рдкрд░ рдЬреБрдбрд╝рд╡рд╛рдВ рднрд╛рдИ рд╣реИрдВ)ред
рдЕрднреА рднреА рдЙрддреНрд╕рд░реНрдЬрдХреЛрдВ рдХреЛ рд░рд╛рдЬреНрдпреЛрдВ ( рд░рд╛рдЬреНрдп ) рдХреЗ рд░реВрдк рдореЗрдВ рджрд░реНрд╢рд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ - рдорд╛рд░реНрдЧ рдФрд░ рд╡рд┐рд╕реНрдлреЛрдЯ рдХреА рд▓рд╣рд░ рдХреА рд╣рд╛рд░ рдХреЗ рдмрд╛рджред рдФрд░ рдЙрддреНрд╕рд░реНрдЬрдХреЛрдВ рдХреЗ рдмреАрдЪ рдХрдгреЛрдВ рдХрд╛ "рд╣рд╕реНрддрд╛рдВрддрд░рдг" рд░рд╛рдЬреНрдпреЛрдВ рдХреЗ рдмреАрдЪ рдПрдХ рд╕рдВрдХреНрд░рдордг рд╕реЗ рдЬреНрдпрд╛рджрд╛ рдХреБрдЫ рдирд╣реАрдВ рд╣реИред

рдХреЛрдб Google рдХреЛрдб рдкрд░ рдЙрдкрд▓рдмреНрдз рд╣реИред рдХрдХреНрд╖рд╛ MainWaylines_2

рдкреБрдирд╢реНрдЪ: рдЕрдЧрд▓реЗ рднрд╛рдЧ рдореЗрдВ рдореИрдВ рд╢реВрдЯрд░ рдХреА рдореМрдд рдХреЛ рдЬреЛрдбрд╝ рджреВрдВрдЧрд╛ (рдЖрдЦрд┐рд░рдХрд╛рд░, рд╡рд┐рд╕реНрдлреЛрдЯреЛрдВ рдиреЗ рдорд╛рд░ рдбрд╛рд▓рд╛)
рдореИрдВ рдПрдорд┐рдЯрд░ рдХреА рд╕реЗрдЯрд┐рдВрдЧ рдХреЗ рд╕рд╛рде рдЦреЗрд▓реВрдВрдЧрд╛ - рдореБрдЭреЗ рдорд╣рд╛рдХрд╛рд╡реНрдп рдЪрд╛рд╣рд┐рдПред

PPS: рдкреНрд░рд╢реНрдиред рдореИрдВ рдПрдирд┐рдореЗрдЯреЗрдб 3D рд╡рд░реНрдгреЛрдВ рд╕реЗ рд╕реНрдкреНрд░рд╛рдЗрдЯ рд╢реАрдЯ рдмрдирд╛рдиреЗ рдХрд╛ рдПрдХ рдЖрд╕рд╛рди рддрд░реАрдХрд╛ рд╕реАрдЦрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВ рдЗрд╕реЗ рдЕрдкрдиреЗ рд▓рд┐рдП рджреЗрдЦрддрд╛ рд╣реВрдВ:
  1. рдПрдХ рдПрдирд┐рдореЗрдЯреЗрдб рдЪрд░рд┐рддреНрд░ рд╣реИ
  2. рдореИрдВ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рдЙрддреНрдкрд╛рдж рдореЗрдВ рд▓рдЧрднрдЧ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкреИрд░рд╛рдореАрдЯрд░ рд╕реЗрдЯ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ:
    • рдЖрдХрд╛рд░
    • рдХреИрдорд░рд╛ рдХреЛрдг
    • рдлреНрд░реЗрдо рдХреА рд╕рдВрдЦреНрдпрд╛
  3. рдЖрдЙрдЯрдкреБрдЯ - рд╕реНрдкреНрд░рд╛рдЗрдЯ рд╢реАрдЯ
рдореБрдЭреЗ рдордд рдмрддрд╛рдУ рдХрд┐ рдХреМрди рд╕рд╛ рд░рд╛рд╕реНрддрд╛ рджреЗрдЦрдирд╛ рд╣реИ? рд╢рд╛рдпрдж рдЗрд╕ рддрд░рд╣ рдХреЗ рдПрдХ рдХрд╛рдо рддрдХрдиреАрдХ рдХрд╛ рдПрдХ рд╡рд┐рд╕реНрддреГрдд рд╡рд░реНрдгрди рд╣реИ?
рдЕрдЧреНрд░рд┐рдо рдзрдиреНрдпрд╡рд╛рджред

PPPS: MainWaylines_2.explosion () рд╡рд┐рдзрд┐ рдХреЗ рдХреЛрдб рдореЗрдВ рджреЛ рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреЛ рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛: рдпрд╣ рд╡рд┐рд╕реНрдлреЛрдЯ рд╕реЗ рдкрд╣рд▓реЗ рдХрдг рд╡реЗрдЧ рд╡реИрдХреНрдЯрд░ рдХреЛ рд░реАрд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИ - рдпрд╣ рдЕрдзрд┐рдХ рдкреНрд░рд╛рдХреГрддрд┐рдХ рджрд┐рдЦрддрд╛ рд╣реИ

 protected function explosion(e:MouseEvent):void { ... particleClone.velX = 0; particleClone.velY = 0; ... } 

Source: https://habr.com/ru/post/In218697/


All Articles