下载安卓APP箭头
箭头给我发消息

客服QQ:3315713922

教你在Cocos2D-X中如何计算JumpBy中的y轴的分量

作者:课课家教育     来源: http://www.kokojia.com点击数:989发布时间: 2019-03-29 10:58:12

标签: Cocos2D-X抛物线Cocos2D-X JumpByCocos2D-X技巧

  我们平时在游戏开发中经常会使用到JumpBy,那么JumpBy中的抛物线弹跳原理又是什么呢?本篇教程将教你在Cocos2d-x中如何计算JumpBy中的y轴的分量。

  JumpBy通过模拟抛物线跳动来改变一个节点的位置。

  static JumpBy* create(float duration, const Vec2& position, float height, int jumps);

  duration 整个动作持续多少秒

  position 每次跳跃的偏移距离

  height 跳多高

  jumps 跳多少次

  void JumpBy::update(float t)

  {

  // parabolic jump (since v0.8.2)

  if (_target)

  {

  float frac = fmodf( t * _jumps, 1.0f );

  float y = _height * 4 * frac * (1 - frac);

  上面这两行比较难以理解,

  这里首先要弄清楚参数t的含义,通过查看源码可知,t是已过去的时间elapsed和动作总时间duration的比值,也就是说

  t = elapsed/duration, 表示整个动作进度的百分比,取值0~1。

  由于我们需要在duration秒内跳jumps次,那么每次跳跃需要时间

  t1 = duration/jumps,

  可推出

  t * jumps

  = elapsed *jumps/duration

  = elapsed /t1

  假设当前已跳完n次,正在跳第n+1次,且第n+1次已过去p秒,则

  elapsed=n*t1+p

  于是,

  t * jumps = (n*t1 + p)/t1=n+p/t1

  于是就得出

  float frac

  =fmodf(t*jumps,1.0f)

  =p/t1

  =当前跳跃已完成的百分比

教你在Cocos2D-X中如何计算JumpBy中的y轴的分量_Cocos2D-X抛物线_Cocos2D-X JumpBy_Cocos2D-X技巧_课课家

  好,现在已经弄明白frac的含义了,下面就简单了,

  以frac为横坐标,高度为纵坐标建立坐标系,考虑如上图的抛物线,y=a*x*x+b*x+c,我们以节点起跳的位置为原点,则

  在x=0处,高度为0,因为还没起跳

  在x=1处,高度为0,因为已经落地

  在x=0.5处,高度达到最高点height

  所以得出

  c=0,

  a+b+c=0,

  a/4 +b/2+c=height,

  解方程组得到

  c=0,

  a=-4*height,

  b=4*height,

  于是原方程可表示为

  y=-4*height*x*x+ 4*height*x

  =4*height*x*(1-x)

  到此完全推导出代码中的公式

赞(16)
踩(3)
分享到:
华为认证网络工程师 HCIE直播课视频教程