解析Cocos2D

  我们在游戏开辟中经常会需求用Cocos2d-x制作雷电后果,那么我们只需如何完成雷电后果呢?本篇教程将教你用Cocos2D轻松制作真实感实足的雷电后果。

  原文是一篇解说闪电门路算法的文章,本文将经过该算法,在Cocos2d-x下面完成闪电殊效。

  笔者应用的2d-x版本为2.2.2。下面进入正题

  译文:

  解析Cocos2D-X中真实雷电殊效如何制作_Cocos2D-X闪电_Cocos2D-X殊效_Cocos2D-X教程_课课家

  这部短片应用了中点位移法来模拟闪电。

  中点位移法平日是用于生成分形地形的算法,你会发明闪电的外形相似于一个抱负化的山脉的边沿。

  下面节选的这段闪电递归依次可以帮你完成一切的任务。

  function drawLightning(x1,y1,x2,y2,displace)

  {

  if (displace < curDetail) {

  graf.moveTo(x1,y1);

  graf.lineTo(x2,y2);

  }

  else {

  var mid_x=(x2+x1)/2;

  var mid_y=(y2+y1)/2;

  mid_x +=(Math.random()-.5)*displace;

  mid_y +=(Math.random()-.5)*displace;

  drawLightning(x1,y1,mid_x,mid_y,displace/2);

  drawLightning(x2,y2,mid_x,mid_y,displace/2);

  }

  }

  你可以经过传递一个线段的两个端点坐标(x1,y1,x2,y2)和一个位移量,计算出线段终点坐标(mid_x,mid_y),然后经过一个随机值交换它,该随机值依照每次划分线段时的位移值比例增加。

  

  第一次划分会掉掉落一个较大年夜的位移线段,而以后随着位移值的减小位移线段也会逐渐减小(每次递归位移值都邑除以2),如此便可使一条线段"碎形"。

  当位移值低于我们定义的最小值时(可应用"detail"滑动条修改),我们就将这条线绘制出来。也就是说满足条件if(displace

  原文中的四个滑动条:

  1.detail 添加后,线条数量会增加,每个线条会更长。

  2.thickness 代表线条的粗细

  3.number bolts 代表线条的数量

  4.displacement 位移量,也就是线条数值标的目标偏移的十分值

  下面我们将应用该算法,在Cocos2d-x 中完成上图后果。

  起首新建一个工程,笔者还是习惯性的定名为reventon....因为reventon文件夹曾经存在了,照样定名为drawlighting吧。

  因为完成起来十分复杂,所以便直接在HelloWorld外面添加代码吧,起首是HelloWorld.h文件中添加声明

0
打赏(暂停功能)