LayaBox天降红包雨实现之TypeScript

说实话,在小编第一次接到这个需求的时候,有点子激动,哈哈。,策划给的需求是:

  • 上方的妹子插画:侧躺的仙女,要仙女,可以暴露一点

主要玩法:

1.红包雨期间,不定时从指定区域内落下红包
2.玩家点击中红包随机获得奖品
3.点击中飘落的红包,打开红包;若点不中,则不会打开
4.点击红包时,红包切换颜色,并放大1.2倍,松开点击时红包恢复原样

实现方法:

由于要考虑到玩法贴近自然,所以设置了一些参数来控制红包:

/**
 * 定时重复执行(基于帧率)。
 * @param  _num     每次掉落的红包数(最大4个)。
 * @param  xPoints x坐标轴坐标点集(1行4个)。
 * @param  yPoints      y坐标轴坐标点集。
 * @param  delayTimes Y区延时下落时间集。
 * @param  _high    下落最远距离。
 * @param  _fallTime 下落时间(秒)。
 * @param  _time    间隔几秒(秒)。
 */

 

1.开启一个1s定时器进行驱动红包不断掉落
每1中掉落个数在给定区间内进行随机:文中给的是1-4个
随机红包个数 org.tools.MathHelper.randomRange(1, 4);
红包随机出生点 org.tools.MathHelper.randomArray(t.xPoints)
for(let i = 0; i < t._num; i++)
    t.onFall(i);


2.为当前红包雨界面盒子注册舞台点击事件


3.进行红包点击检测:
1)遍历所有的红包,进行判定当前点击是否处于红包范围内,如果在内部则判定为点击改红包,进行响应。


    红包进行响应:
    

红包下落过程中开启一个帧循环,进行边界检测,如果y左边>界面高度,则判定为离开可视范围,将红包进行回收,


    /**获取掉落时间段时间,把一整段时间切分多个时间段,每个时间段内红包掉落速度有快有慢*/
  
v红包下落速度 = (屏幕高度/掉落时间) 
y距离 = v红包下落速度*Laya.timer.delta
为了增加真实性,每个红包的角度、大小都进行一次随机,
    let rotation = org.tools.MathHelper.randomRange(-25, 25);
    let rs:number = org.tools.MathHelper.randomRange(80, 120) / 100;

至此,红包雨的大体功能完成了,看效果图:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值