nikaple吧 关注:164贴子:2,320
  • 4回复贴,共1

自己写的scatterShoot

只看楼主收藏回复

//usage : scatterShoot(number,speed,maxAngle,centerDir,object)
var i,n,spd,obj,a,angle;
n = argument0 // number
spd = argument1 // speed
maxdir = argument2 //max angle 张角
center = argument3 //center direction 中心方向
obj = argument4 // object
angle = maxdir / n ;
if center=1{
dir = point_direction(x,y,player.x,player.y);
}
else if center=-1{
dir = random(360);
}
else{
dir = center;
}
if(n mod 2 == 1)
{
for(i=-(n-1)/2;i<=(n-1)/2;i+=1)
{
a = instance_create(x,y,obj);
a.direction = dir+angle*i;
a.speed = spd;
}
}
if(n mod 2 == 0)
{
for(i=-n/2;i<n/2;i+=1)
{
a = instance_create(x,y,obj);
a.direction = dir+angle*(i+0.5);
a.speed = spd;
}
}


IP属地:广东1楼2014-01-08 18:06回复
    更新:
    //usage : scatterShoot(number,maxSpeed,minSpeed,maxAngle,centerDir,object)
    var i,n,spd,obj,a,angle;
    n = argument0 // number
    maxspd = argument1 // maxSpeed
    minspd = argument2 // minSpeed
    maxdir = argument3 //max angle
    center = argument4 //center direction 1: to player , -1: random , else : the number you write
    obj = argument5 // object
    angle = maxdir / n ;
    if center=1{
    dir = point_direction(x,y,player.x,player.y);
    }
    else if center=-1{
    dir = random(360);
    }
    else{
    dir = center;
    }
    if(n mod 2 == 1)
    {
    sp = (maxspd - minspd) / ((n - 1) / 2) ;
    for(i=-(n-1)/2;i<=(n-1)/2;i+=1)
    {
    a = instance_create(x,y,obj);
    a.direction = dir + angle * i;
    a.speed = maxspd - sp * abs(i);
    }
    }
    if(n mod 2 == 0)
    {
    sp = (maxspd - minspd) / ((n - 2) / 2) ;
    for(i=-n/2;i<n/2;i+=1)
    {
    a = instance_create(x,y,obj);
    a.direction = dir + angle * (i + 0.5);
    a.speed = maxspd - sp * (abs(i + 0.5) - 0.5);
    }
    }


    IP属地:广东2楼2014-01-09 15:38
    收起回复
      //usage : scatterShoot(number,maxSpeed,minSpeed,maxAngle,centerDir,object,centerColor,sideColor,sin or not)
      var i,n,maxspd,minspd,obj,a,angle,col1,col2,sine;
      n = argument0 // number
      maxspd = argument1 // maxSpeed
      minspd = argument2 // minSpeed
      maxdir = argument3 //max angle
      center = argument4 //center direction 1: to player , -1: random , else : the number you write
      obj = argument5 // object
      col1 = argument6 //center color
      col2 = argument7 //side color
      sine = argument8 //sin or not
      angle = maxdir / n ;
      if col1 == 0
      {
      col1 = c_white;
      }
      if col2 == 0
      {
      col2 = c_white;
      }
      if center=1{
      dir = point_direction(x,y,player.x,player.y);
      }
      else if center=-1{
      dir = random(360);
      }
      else{
      dir = center;
      }
      if(n mod 2 == 1)
      {
      sp = (maxspd - minspd) / ((n - 1) / 2) ;
      for(i=-(n-1)/2;i<=(n-1)/2;i+=1)
      {
      a = instance_create(x,y,obj);
      a.direction = dir + angle * i;
      if sine{
      a.speed = minspd + (maxspd - minspd)*cos(degtorad(90*i/((n-1)/2)));
      }
      else{
      a.speed = maxspd - sp * abs(i);
      }
      a.image_blend = merge_color(col2,col1,(abs(i) / ((n - 1) / 2)));
      }
      }
      if(n mod 2 == 0)
      {
      sp = (maxspd - minspd) / ((n - 2) / 2) ;
      for(i=-n/2;i<n/2;i+=1)
      {
      a = instance_create(x,y,obj);
      a.direction = dir + angle * (i + 0.5);
      if sine{
      a.speed = minspd + (maxspd - minspd)*cos(degtorad(90*(i+0.5)/((n-1)/2)))
      }
      else{
      a.speed = maxspd - sp * (abs(i + 0.5) - 0.5);
      }
      a.image_blend = merge_color(col2,col1,((abs(i + 0.5) - 0.5) / (n - 2) / 2));
      }
      }


      IP属地:广东3楼2014-01-10 12:03
      回复
        技术贴挖坟计划


        IP属地:广东4楼2017-09-02 12:28
        回复