梳理下转盘游戏的流程,点击,开转,停止,出结果,于是重点就在模拟转的过程!
定数据结构!假设一个转盘有4行,5列,为了视觉效果连贯,我们需要设计一个5行5列的棋盘,(第一行隐藏在棋盘上方)于是共有5*5=25个item,每个item的宽高保持一致,转盘每一列的状态用int控制,1,2,3分别代表转,停和即将停
当开始转后,每列状态变为1,从第一列开始,每一列整列向下移动,在移动到一个item高度时,整列回归到起始高度,同时除了第一行之外其余列从下到上替换图片,即本行的图片替换为上一行的图片,第一行图片换为随机图,转动时循环这个过程
在要停的时候,每列状态变为3,此时最后一次循环上面的过程,在该列都回到起始高度时,状态变为2,停止转动
代码来了!
1 Game{
2 row = 5 3 col = 5 4 startpos = 300 --列的起始位置 5 endpos = 150 --列的结束位置,默认图高150 6 item = {} --所有图片 7 itemcol = {} --所有列节点 8 colstate = {} --列状态,1转动,2停止,3即将停止 9 speed = 30 --每帧的移动速度 10 stopdelay = 30 --转盘停止的延时参数,也可以用表设置每列停止延时 11 } 12 13 function Game:Init() 14 for i = 0,self.col - 1 do 15 self.item[i] = {} 16 self.colstate[i] = 2 17 for j = 0,self.row-1 do 18 self.item[i][j].image = randomimage --给所有节点的图片赋值 19 end 20 end 21 end 22 23 function Game:Update() 24 for i = 0,self.col -1 do 25 if self.colstate[i] == 1 then 26 self.itemcol[i].pos.y = self.itemcol[i].pos.y - vector3(0,speed,0) --列的位置向下移动 27 if self.itemcol[i].pos.y <= self.endpos then 28 self.itemcol[i].pos.y = self.startpos 29 for j = self.row -1, 1, -1 do 30 self.item[i][j].image = self.item[i][j-1].image 31 end 32 self.item[i][0].image = randomimage 33 if self.stopdelay >= 0 then 34 self.stopdelay = self.stopdelay -1 35 if self.stopdelay <= 0 then 36 self.colstate[i] = 3 37 end 38 end 39 end 40 else if if self.colstate[i] == 3 then 41 self.itemcol[i].pos.y = self.itemcol[i].pos.y - vector3(0,speed,0) --列的位置向下移动 42 if self.itemcol[i].pos.y <= self.endpos then 43 self.itemcol[i].pos.y = self.startpos 44 for j = self.row -1, 1, -1 do 45 self.item[i][j].image = self.item[i][j-1].image 46 end 47 self.item[i][0].image = randomimage 48 self.colstate[i] = 2 49 end 50 end
end
51 end