游戏案例——幸运转盘

2019-07-18  本文已影响0人  雷小雷LL
幸运转盘图
幸运转盘.jpg
在游戏内,转到几倍数值基本都是有服务器发给客户端的,然后再根据服务器下发的数值进行随机到相应的倍数上,在面板中展示对应的倍数。

实现比较简单,直接上代码,思路可看代码的注释

--旋转指针
function LuckyWheel:RotatePointer()
    local todayBetGold = Data_Wheel.Gold   --抽到的金币
    local times = Data_Wheel.betTime    --当前抽的次数
    local curGold = 0
    if times> 0 then
        curGold = self:ReturnNeedGold(times-1,1)   --根据抽奖次数返回抽奖需要的金币,默认100
    else
        curGold = 100
    end
    local multi = (todayBetGold) / curGold
    local angle = 0  --旋转角度
    local circle = 0  --转的圈数
    local addAngle = 0   --根据倍数增加的角度 <360°
    local multi = 1
    if curGold~=0 then
        multi = Data_Wheel.betGold/curGold
    else
        return
    end
    circle = math.random(3, 4)    --随机圈数
        --根据倍数随机倍数里的角度值,为了不压线,因此1-45°就随机15-30°里面的角度值,以此类推
    if multi == 1 then
        addAngle = math.random(15, 30)
    elseif multi == 1.2 then
        addAngle = math.random(60, 75)
    elseif multi == 1.5 then
        addAngle = math.random(105, 120)
    elseif multi == 2 then
        addAngle = math.random(150, 165)
    elseif multi == 3 then
        addAngle = math.random(195, 210)
    elseif multi == 5 then
        addAngle = math.random(240, 255)
    elseif multi == 10 then
        addAngle = math.random(285, 300)
    elseif multi == 20 then
        addAngle = math.random(330, 345)
    else
        addAngle = 0
    end
    angle = circle * 360 + addAngle
    self.pointerAnim = self.pointer.transform:DOLocalRotate(Vector3(0,0,-angle),2,DG.Tweening.RotateMode.FastBeyond360):SetAutoKill(false):SetEase(Ease.OutSine)      --设置指针转动效果
    ----等待1秒后告诉玩家抽奖结果
    self.waitSecondsTimer = TimerManager.AddCount(1, 3);
    self.waitSecondsTimer:OnUpdate(function(timer)
        self:OpenRedPackage()
    end);
end
上一篇 下一篇

猜你喜欢

热点阅读