Cocos2d-x学习笔记(3) - 动作

时间:2023-02-06 19:54:38
对于一个游戏来说,动作是非常重要的,好的动作可以使游戏的可玩性大大提高,在cocos2d-x引擎中有一个动作类,CCAction是动作类的基类,动作是定义在节点(CCNode)上的,以节点为目标,主要分为两类瞬时动作和延时动作,具体的动作可以再官方的api上有详细的列表,这里给一个链接吧!(不要总是偷懒。。。http://cn.cocos2d-x.org/document
一个动作的实现主要有以下几个步骤,下面我以山寨水果忍者中涉及到的函数为例吧。。。

1.创建一个节点

Cocos2d-x学习笔记(3) - 动作

这里是创建水果的函数,Fruit是我自定义的一个类,我创建一个随机的水果,设置水果的位置,其他的代码暂时不用理解。

2.定义动作

Cocos2d-x学习笔记(3) - 动作

我为水果定义了两种曲线运动方式,都是在-x中很常用的,一个CCJumpTo,另一个是CCBezierTo就是贝塞尔曲线,另一个CCRotateTo就是让节点旋转,贝塞尔曲线的使用比较重要,可以查一下相关的资料掌握一下。

3.动作的执行

Cocos2d-x学习笔记(3) - 动作

一般情况下你会有几个动作需要执行,那么很重要的就是控制好动作的执行顺序,是同时执行还是一个一个接着的执行,用CCFiniteTimeAction来定义在给定时间内需要执行完的动作,用CCSequence动作序列来放置需要执行的动作,刚开始比较难控制动作的执行顺序

(1)如果采用这种方式执行动作,动作是同时执行的,这里的actions和cocos2d中的很相近。

Cocos2d-x学习笔记(3) - 动作

2)如果采用这种方式执行动作,动作是按照序列的顺序执行,CCDelayTime是延迟时间的函数。

Cocos2d-x学习笔记(3) - 动作

通常游戏在调用动作之后会进行相关的操作(消息机制),例如导航到其它的页面或者调用相关的回调函数,这是你可以再CCFiniteTimeAciton中定义,如何把它添加到动作队列中,这样就可以再完成动作之后执行,例如

Cocos2d-x学习笔记(3) - 动作

这里我是用CCCallFuncN来定义一个动作调用removefruit这个回调函数,CCCallFuncN是针对一个节点设计的,“N”就是Node的意思,如果不是针对节点就可以用CCCallFunc来定义,它还提供了一个很方便的接口,就是reverse,来执行动作的反动作,你可以通过actionMoveDown->reverse()来使用。
动作暂时就讲到这里,具体的内容以后肯定还要补充,如果我有什么写错的地方希望大家多多纠正啦!