金币落袋效果

金币从初始点散开然后逐个飞落到指定的位置,这是游戏里面很常用的一个动画,效果如下

实现思路

要实现这个效果,我们已知三个条件,分别是起点位置,终点位置,金币个数。

生成金币位置

金币散开的位置看起来很随机,但是经过我们的拆解,其实它的第一步是先生成一个标准的圆。假设我们现在是8个金币,我们知道起点的坐标,如何求这8个金币的散开位置呢,这其实是一个数学问题。 8个金币平分一个圆,每个金币夹角是360度 / 8 = 45度,假设圆的半径r是确定的,我们又知道圆心的坐标,结合三角函数我们就能够很轻易算出每个金币的位置。

当我们拥有每一个金币的标准位置之后,再给它们每个的位置叠加一个随机偏移,这样子他们的位置看起来就是围绕着起点做随机分布

fly_gold_circle_1

以上代码如下

/**
 * 以某点为圆心,生成圆周上等分点的坐标
 *
 * @param {number} r 半径
 * @param {cc.Vec2} pos 圆心坐标
 * @param {number} count 等分点数量
 * @param {number} [randomScope=80] 等分点的随机波动范围
 * @returns {cc.Vec2[]} 返回等分点坐标
 */
getCirclePoints(r: number, pos: cc.Vec2, count: number, randomScope: number = 60): cc.Vec2[] {
  let points = [];
  let radians = (Math.PI / 180) * Math.round(360 / count);
  for (let i = 0; i < count; i++) {
    let x = pos.x + r * Math.sin(radians * i);
    let y = pos.y + r * Math.cos(radians * i);
    points.unshift(cc.v3(x + Math.random() * randomScope, y + Math.random() * randomScope, 0));
  }
  return points;
}

金币落袋

拆分效果可以看到,金币落袋的过程中还有先后的顺序,我们在实现的时候先计算一下每个金币到袋子的距离,然后做个排序,让距离袋子近的金币先执行进袋的动画,远的后执行。

fly_gold_circle_2

代码的实现如下:

goldNodeList.sort(node => node.dis);

goldNodeList.forEach((node, idx) => {
    node.gold.runAction(cc.sequence(
        cc.moveTo(0.3, node.startPoint),
        cc.delayTime(idx * 0.03),
        cc.moveTo(0.6, node.endPoint),
        cc.callFunc(() => {
            this.goldPool.put(node.gold);
        })
    ))
});

效果预览

源码获取请点击查看原文,长按二维码查看效果????

ewm

我是异名,你的阅读是我的动力

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Matlab是一种强大的数学计算软件,也可以用来进行物理仿真模拟。要使用Matlab模拟打台球,我们需要在计算机内部构建一个用于表示台球和桌面的模型,并使用物理规则来模拟球的运动。下面是一个简单的示例。 首先,我们可以用Matlab的图形界面工具箱(Graphical User Interface, GUI)创建一个界面,绘制一个台球桌和一些初始位置的球。接下来,我们需要定义球的初始位置、质量、半径和初始速度。 然后,使用Matlab中的“ode45”函数来求解球的运动方程。球的运动可以由牛顿第二定律描述,即 F = m*a,其中F是球受到的合力,m是球的质量,a是球的加速度。球受到的合力包括摩擦力、重力和碰撞力。 在模拟打台球的过程中,我们还需要考虑球与球之间的碰撞,以及球与边框之间的碰撞。碰撞过程中,根据动量守恒和动能守恒定律,可以计算出碰撞后球的速度和方向的变化。 模拟的过程中,可以使用Matlab绘制每个时刻球的位置,并实时更新图像。通过调节初始条件和球的参数,我们可以模拟出不同情况下球的运动轨迹和碰撞结果。例如,可以模拟撞击球杆后球的滚动、弹穿球、球落袋等台球相关的情况。 总结起来,使用Matlab模拟打台球需要构建物理模型,求解球的运动方程,并考虑球之间和球与边框之间的碰撞。通过调节模型参数和初始条件,我们可以模拟出不同情况下的球的运动,从而实现台球的仿真模拟。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值