Guest User

2D homing algorithm

a guest
Oct 22nd, 2013
42
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1.            getTargets: function() {
  2.                 targets = [],   minDistance = 1000, nearestTarget = null;
  3.                 targets = ig.game.getEntitiesByType(EntityBaseEnemy);
  4.  
  5.                 for (var i = 0, len = targets.length; i < len; i++){
  6.                     var target  = targets[i];
  7.                     if (minDistance > this.distanceTo(target)){
  8.                         nearestTarget = target;
  9.                     }
  10.                 }
  11.                 var angle   = this.angleTo( nearestTarget );
  12.                 this.vel.x  = Math.cos( angle ) * this.speed;
  13.                 this.vel.y  = Math.sin( angle ) * this.speed;
  14.  
  15.                 this.currentAnim.angle += (angle - this.currentAnim.angle) * this.turnFactor;
  16.             },
  17.  
  18.  
  19.     distanceTo: function( other ) {
  20.         var xd = (this.pos.x + this.size.x/2) - (other.pos.x + other.size.x/2);
  21.         var yd = (this.pos.y + this.size.y/2) - (other.pos.y + other.size.y/2);
  22.         return Math.sqrt( xd*xd + yd*yd );
  23.     },
  24.    
  25.    
  26.     angleTo: function( other ) {
  27.         return Math.atan2(
  28.             (other.pos.y + other.size.y/2) - (this.pos.y + this.size.y/2),
  29.             (other.pos.x + other.size.x/2) - (this.pos.x + this.size.x/2)
  30.         );
  31.     },
  32.  
  33.         getEntitiesByType: function (type) {
  34.             var entityClass = typeof (type) === 'string'
  35.                 ? ig.global[type]
  36.                 : type;
  37.  
  38.             var a = [];
  39.             for (var i = 0; i < this.entities.length; i++) {
  40.                 var ent = this.entities[i];
  41.                 if (ent instanceof entityClass && !ent._killed) {
  42.                     a.push(ent);
  43.                 }
  44.             }
  45.             return a;
  46.         },
RAW Paste Data