游戏中子弹跟随目标移动的方法
FollowUpBullet(x1,y1,x2,y2,speed){ var deltax = x1 - x2 var deltay =y1 - y2 if (deltax == 0 ) { if( y1 >= y2 ){ deltax = 0.0000001 }else{ deltax = -0.0000001 } } if (deltay == 0 ) { if( x1>= x2 ){ deltay = 0.0000001 }else{ deltay = -0.0000001 } } var angle = 0 var π = Math.PI; if( deltax>0 && deltay>0 ){ angle = Math.atan( Math.abs(deltay/deltax)) // 第一项限 }else if( deltax<0 && deltay>0 ) { angle = π- Math.atan( Math.abs(deltay/deltax)) // 第二项限 }else if( deltax<0 && deltay<0 ) { angle = π+ Math.atan( Math.abs(deltay/deltax)) // 第三项限 }else{ angle = 2*π- Math.atan( Math.abs(deltay/deltax)) // 第四项限 } var x = speed * Math.cos(angle) var y = speed * Math.sin(angle) this.bullet.x += x; this.bullet.y += y; }
利用三角函数计算相对位置,计算子弹位置