ゲーム中のミサイル追跡のアルゴリズム



ポテンシャル関数について追跡とブロッキングのアルゴリズムを使ってください.
研究したことがありますが、教えてもらえますか?
パワードBy Sunday
メール:[email protected]

var stepAngle:Number = 3; 
//       
var tempNum:Number = 0; 
var radius:Number = 100; 
//       
var M_speed:Number = 3; 
//    (   ) 
var P_speed:Number = 5; 
//     
findToHit(missile, target); 
function findToHit(missile, target) { 
missile.onEnterFrame = function() { 
  _root.AngText = stepAngle; 
  if (missile.hitTest(target.hit)) { 
   target.play(); 
   missile._visible = false; 
   delete missile.onEnterFrame; 
  } 
  //---------------                             
  tempNum++; 
  if (tempNum == 15) { 
   if (stepAngle == 2) { 
    if (Math.abs(target._x-missile._x)>radius*2 || Math.abs(target._y-missile._y)>radius*2) { 
     stepAngle = 3; 
    } 
   } else if ((Math.abs(target._x-missile._x)<30 || Math.abs(target._y-missile._y)<30)) { 
    stepAngle = 2; 
   } 
   tempNum = 0; 
  } 
  //---------------------      -------------------------                                                
  P = new Object(); 
  P.x = missile.way._x; 
  P.y = missile.way._y; 
  missile.localToGlobal(P); 
  dx = P.x-missile._x; 
  dy = P.y-missile._y; 
  dx1 = target._x-P.x; 
  dy1 = target._y-P.y; 
  //----------------------    --------------------------  
  angle = Math.atan2(dy1, dx1)*180/Math.PI; 
  //-----------------------    ------------------------ 
  angle = angle<=0 ? Math.abs(360+angle) : angle; 
  M_angle = missile._rotation<0 ? 360+missile._rotation : missile._rotation; 
  if (Math.abs(M_angle-angle)>stepAngle) { 
   if (angle-M_angle>180) { 
    M_angle += -stepAngle; 
   } else { 
    M_angle += angle<M_angle && (M_angle-angle<180) ? -stepAngle : +stepAngle; 
   } 
   missile._rotation = M_angle; 
  } 
  //---------------------      -----------------------      
  missile._x += dx*M_speed/10; 
  missile._y += dy*M_speed/10; 
  //-----------------------    --------------------- 
}; 
} 
//-----------------------------  --------------------- 
listen = new Object(); 
listen.onKeyDown = function() { 
onEnterFrame = function () { 
  if (Key.isDown(Key.RIGHT)) { 
   target._x += P_speed; 
  } else if (Key.isDown(Key.LEFT)) { 
   target._x -= P_speed; 
  } else if (Key.isDown(Key.UP)) { 
   target._y -= P_speed; 
  } else if (Key.isDown(Key.DOWN)) { 
   target._y += P_speed; 
  } 
}; 
}; 
Key.addListener(listen); 
//----------------------------    --------------------------