绘制简易闪电效果
残翼御风 发表于 2015-10-15 11:37:34 1268

本帖最后由 残翼御风 于 2017-1-7 22:09 编辑

特点:即插即用,可自定义闪电颜色和粗细(毕竟其实是用gms内置的线绘制函数来绘制闪电),全绘制,不需要任何素材
使用方法:在obj的Draw里加入drawLightning(x1,y1,x2,y2,折线长度) ;
参数备注:drawLightning(x1,y1,x2,y2,折线长度) 即为在点(x1,y1)(x2,y2)之间绘制闪电 折线长度是指扭动的每一
小段闪电的长度,不得低于40。这个参数越大,闪电抖动得越厉害

PS:低于40就是一条直线了(可以在脚本里自定义这个值,不过经过测试感觉这个数值在一屏里比较合适……)

/*-------------------------
作者信息:残翼御风
http://starcaller.lofter.com/

使用方法:在obj的Draw里加入drawLightning(argument0,argument1,argument2,argument3,argument4);
参数备注:(x1,y1,x2,y2,折线长度)  即为在点(x1,y1)(x2,y2)之间绘制闪电 折线长度是指扭动的每一
小段闪电的长度,不得低于40。这个参数越大,闪电抖动得越厉害
-------------------------*/
{
  if (argument4 < 20) {//低于40就是一条直线了(可以自定义这个值,不过经过测试感觉这个数值在一屏里比较合适……)
    draw_line_width(argument0,argument1,argument2,argument3,1.5);
  }
  else {
  var mid_x = (argument2+argument0)/2;
  var mid_y = (argument3+argument1)/2;
    mid_x+=(random_range(0,1)-0.5)*argument4;
    mid_y += (random_range(0,1)-0.5)*argument4;
    drawLightning(argument0,argument1,mid_x,mid_y,argument4/2);
    drawLightning(argument2,argument3,mid_x,mid_y,argument4/2);
  }
}


GMS用 链接:http://pan.baidu.com/s/1pJIM8YZ 密码:eduq
GM 用 链接:http://pan.baidu.com/s/1c0yQpYK 密码:09ph
示例:
这是40的线条
[attach]1795[/attach]
这是20的线条(每一节太短了,线就容易拗成圈……)
[attach]1796[/attach]

上图测试用代码段如下:(各种颜色与折线长度设定)
draw_set_colour(c_yellow)
drawLightning(32,64,256,160,120)
draw_set_colour(c_blue)
drawLightning(32,64,256,160,140)
draw_set_colour(c_red)
drawLightning(32,64,256,160,90)
draw_set_colour(c_green)
drawLightning(32,64,256,160,100)




最新回复 (16)
  • 断水 发表于 2015-10-15 11:45:51
    0 2
    已入库。
  • serbow 发表于 2015-10-15 12:51:12
    0 3
    这是自创一个函数吗,厉害!
  • 了脚喵 发表于 2015-10-16 12:17:06
    0 4
    感谢分享!
  • 礼程 发表于 2015-10-16 11:08:17
    0 5
    支持~马克一下以后看看能不能用的上
  • Mage松仁玉米 发表于 2015-10-16 11:14:09
    0 6
    贴个图啊,
  • 残翼御风 发表于 2015-10-16 02:18:13
    0 7
    QuoteMage松仁玉米 发表于 2015-10-16 11:14
    贴个图啊,


    好,回去做个例子
  • 残翼御风 发表于 2015-10-16 02:18:14
    0 8
    QuoteMage松仁玉米 发表于 2015-10-16 11:14
    贴个图啊,


    好,回去做个例子
  • 残翼御风 发表于 2015-10-16 02:18:16
    0 9
    QuoteMage松仁玉米 发表于 2015-10-16 11:14
    贴个图啊,


    好,回去做个例子
  • 毛团儿球 发表于 2015-10-17 10:40:42
    0 10
    看起来还听炫酷的哈?
  • 13593827041 发表于 2015-10-17 10:41:25
    0 11
    怎么定义drawLightning?会报错
  • 残翼御风 发表于 2015-10-17 02:56:00
    0 12
    本帖最后由 残翼御风 于 2015-10-17 14:59 编辑

    Quote13593827041 发表于 2015-10-17 10:41
    怎么定义drawLightning?会报错

    把顶楼里的代码放到你工程的【脚本】里去(注意该脚本命名应为[backcolor=rgb(249, 249, 249)]drawLightning)[/backcolor],然后就可以使用了
  • MikuScarlet 发表于 2015-10-17 07:14:09
    0 13
    本帖最后由 MikuScarlet 于 2015-10-17 19:17 编辑

    这个之前在群里有见过有人讨论,用到了递归…感觉递归什么的好厉害…自己完全写不出来啊。
    思路大概就是将取以点1和点2为线段的线段上,每隔一定距离就取一个点,然后给那个点加上随机数什么的然后逐个连接上什么的吧。
  • wild-dog2 发表于 2015-10-18 03:40:13
    0 14
    跟电流性质一样哈。非常不错。我以前就想找这样的效果做不出来,在官网偷了一个。呵。
  • 残翼御风 发表于 2015-10-19 09:42:08
    0 15
    QuoteMikuScarlet 发表于 2015-10-17 19:14
    这个之前在群里有见过有人讨论,用到了递归…感觉递归什么的好厉害…自己完全写不出来啊。
    思路大概就是将 ...


    这个就是上次参与了群里讨论之后的成果{:5_261:}
  • 残翼御风 发表于 2015-10-19 09:42:13
    0 16
    QuoteMikuScarlet 发表于 2015-10-17 19:14
    这个之前在群里有见过有人讨论,用到了递归…感觉递归什么的好厉害…自己完全写不出来啊。
    思路大概就是将 ...


    这个就是上次参与了群里讨论之后的成果{:5_261:}