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