1. JumpBy JumpTo

JumpBy,边跳边平移,不只做垂直向上的抛物动作,同时还在向终点平移。JumpTo是JumpBy的子类。

1.1 成员变量 create方法

JumpBy:

    Vec2           _startPosition; // startWithTarget getPosition设置
Vec2 _delta; // create 参数position设置
float _height; // create参数
int _jumps; // create参数
Vec2 _previousPos; // startWithTarget getPosition设置

JumpTo:

    Vec2           _startPosition; // startWithTarget getPosition设置
Vec2 _delta; // _endPosition减_startPosition
float _height; // create参数
int _jumps; // create参数
Vec2 _previousPos; // startWithTarget getPosition设置
    Vec2 _endPosition; // create 用参数position设置

JumpBy::create(float duration, const Vec2& position, float height, int jumps)

JumpTo::create(float duration, const Vec2& position, float height, int jumps)

1.2 startWithTarget

JumpBy:

ActionInterval::startWithTarget(target);
_previousPos = _startPosition = target->getPosition();

JumpTo:

JumpBy::startWithTarget(target);
_delta.set(_endPosition.x - _startPosition.x, _endPosition.y - _startPosition.y);

1.3 update

JumpBy:

首先计算float frac:

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

t * _jumps是目前总跳跃次数完成的进度,与1求余的值是正在进行的这次跳跃完成的进度。

下一步计算float y:

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

y = _height * 4 * frac * (1 - frac)是以frac为X,y为Y建立的二次函数方程。frac为1时,一次跳跃动作完成。frac为0.5时,跳跃动作运动到最高点。

接下来:

y += _delta.y * t; // _delta是create设置的终点坐标
float x = _delta.x * t;

将当前进度的平移y的坐标加当前一次跳跃进度的y坐标,作为本次y终值。

x只要考虑X方向平移的进度,跳跃与X方向无关。

接下来就简单了:

Vec2 currentPos = _target->getPosition();
Vec2 diff = currentPos - _previousPos;
_startPosition = diff + _startPosition;
Vec2 newPos = _startPosition + Vec2(x,y);
_target->setPosition(newPos);
_previousPos = newPos;

和Move的差不多,只是newPos在之前已经计算好了。这里也用到了宏定义判断CC_ENABLE_STACKABLE_ACTIONS。

JumpTo:

使用父类JumpBy的update方法,不同之处只是To的_delta在startWithTarget中计算的positioin,By直接使用了我们设置的positioin。

Cocos2d-x 学习笔记(11.3) JumpBy JumpTo的更多相关文章

  1. Ext.Net学习笔记11:Ext.Net GridPanel的用法

    Ext.Net学习笔记11:Ext.Net GridPanel的用法 GridPanel是用来显示数据的表格,与ASP.NET中的GridView类似. GridPanel用法 直接看代码: < ...

  2. SQL反模式学习笔记11 限定列的有效值

    目标:限定列的有效值,将一列的有效字段值约束在一个固定的集合中.类似于数据字典. 反模式:在列定义上指定可选值 1. 对某一列定义一个检查约束项,这个约束不允许往列中插入或者更新任何会导致约束失败的值 ...

  3. golang学习笔记11 golang要用jetbrain的golang这个IDE工具开发才好

    golang学习笔记11   golang要用jetbrain的golang这个IDE工具开发才好  jetbrain家的全套ide都很好用,一定要dark背景风格才装B   从File-->s ...

  4. Spring MVC 学习笔记11 —— 后端返回json格式数据

    Spring MVC 学习笔记11 -- 后端返回json格式数据 我们常常听说json数据,首先,什么是json数据,总结起来,有以下几点: 1. JSON的全称是"JavaScript ...

  5. Python3+Selenium3+webdriver学习笔记11(cookie处理)

    #!/usr/bin/env python# -*- coding:utf-8 -*-'''Selenium3+webdriver学习笔记11(cookie处理)'''from selenium im ...

  6. 并发编程学习笔记(11)----FutureTask的使用及实现

    1. Future的使用 Future模式解决的问题是.在实际的运用场景中,可能某一个任务执行起来非常耗时,如果我们线程一直等着该任务执行完成再去执行其他的代码,就会损耗很大的性能,而Future接口 ...

  7. 《C++ Primer Plus》学习笔记11

    <C++ Primer Plus>学习笔记11 第17章 输入.输出和文件 <<<<<<<<<<<<<< ...

  8. SpringMVC:学习笔记(11)——依赖注入与@Autowired

    SpringMVC:学习笔记(11)——依赖注入与@Autowired 使用@Autowired 从Spring2.5开始,它引入了一种全新的依赖注入方式,即通过@Autowired注解.这个注解允许 ...

  9. Spring 源码学习笔记11——Spring事务

    Spring 源码学习笔记11--Spring事务 Spring事务是基于Spring Aop的扩展 AOP的知识参见<Spring 源码学习笔记10--Spring AOP> 图片参考了 ...

随机推荐

  1. SqlServer 2014 Enterprise 企业版安装程序下载与安装教程

    场景 SqlServer2014 企业版比标准版 多一些功能,比如在企业版中能使用分区函数,但是在标准版Express 中就不能使用. SqlServer 2014 企业版安装包下载: 关注公众号: ...

  2. IO流的工具类

    1.需要先导入jar包: FilenameUtils import org.apache.commons.io.FilenameUtils; public class FilenameUtilesDe ...

  3. 使用 Docker 安装 showdoc

    一.简介 ShowDoc 是一个非常适合IT团队在线共享文档的工具,在线访问地址为:https://www.showDoc.cc 本来也可以直接 pull showdoc 镜像到本地,使用 docke ...

  4. charles 外部代理设置

    本文参考:charles 外部代理设置 external proxy 外部代理设置 有时候您可能需要使用网络上的代理服务器才能访问Internet. 在这种情况下,您需要为Charles配置外部代理. ...

  5. 11 (OC)* CoreImage

    coreimage framework 组成 apple 已经帮我们把image的处理分类好,来看看它的结构: 主要分为三部分: 1)定义部分:CoreImage 何CoreImageDefines. ...

  6. [DE] ML on Big data: MLlib

    Pipeline的最终目的就是学会Spark MLlib,这里先瞧瞧做到心里有数:知道之后要学什么,怎么学. 首要问题 一.哪些机器学习算法可以并行实现? 四类算法:分类.回归.聚类.协同过滤 以及特 ...

  7. [工具][vim] vim设置显示行号

    转载自:electrocrazy的博客 在linux环境下,vim是常用的代码查看和编辑工具.在程序编译出错时,一般会提示出错的行号,但是用vim打开的代码确不显示行号,错误语句的定位非常不便.那么怎 ...

  8. 利用Python进行数据分析:【NumPy】

    一.NumPy:数组计算1.NumPy是高性能科学计算和数据分析的基础包.它是pandas等其他各种工具的基础.2.NumPy的主要功能: # ndarray,一个多维数组结构,高效且节省空间 # 无 ...

  9. C/C++中变量的作用域和存储类型简介

    写在开头 对于很多C/C++的初学者来说,很容易理不清变量的作用域和存储类型这一块的一些概念,也容易将其中的一些概念搞混淆.作为一个C/C++的初学者,笔者希望在这里能够尝试着去理一理这些较为繁杂的概 ...

  10. SkyWalking系列(一):初探

    SkyWalking已经再微服务商城系列里使用了,本篇将介绍如何再Windows系统下安装并简单使用. 1.下载SkyWaling 本篇测试使用6.0版本:http://skywalking.apac ...