Cocos通过动作(Action)让精灵动起来,把数个动作组成序列(Sequence)就能让精灵做出连续的动作,在动作中我们可以改变精灵的位置,旋转角度,缩放比例,等等
动作(Action)
首先我们创建一个Action
对象,同样使用create
,这里我们还是使用HelloWorld场景里的那张图片
auto sprite = Sprite::create("sinnosuke.png");
在setPosition
之后我们加上一句
// 在2秒内:向右移动精灵50像素,向上移动精灵10像素
auto moveBy = MoveBy::create(2, Vec2(50, 10));
sprite->runAction(moveBy);
这个精灵就会平滑地根据我们输入的参数移动
如果把moveBy
改成moveTo
,那就会是另一种结果:
// 在2秒内:把精灵移动到坐标(50,10)
auto moveTo = MoveTo::create(2, Vec2(50, 10));
sprite->runAction(moveTo);
精灵直接移动到了(50,10)
(锚点在其正中间)
By 和 To 的区别
By
算的是相对于节点对象的当前位置To
算的是绝对位置,不考虑当前节点对象在哪
动作组合
你还可以把多个动作加入到一个序列(Sequence)里,让精灵按执行序列
auto moveBy = MoveBy::create(2, Vec2(50, 10));
auto moveTo = MoveTo::create(2, Vec2(50, 10));
auto delay = DelayTime::create(1);//设置一个一秒的延时,也加入序列中
auto seq = Sequence::create(moveBy, delay, moveTo, nullptr);
//做动作moveBy后,延时1秒,做动作moveTo
sprite->runAction(seq);
精灵就会按次序执行序列里的动作
序列我们之后再详细讲解
基本动作
移动
MoveTo
,MoveBy
,使精灵在指定时间内移动到指定地点
auto sprite = Sprite::create("sinnosuke.png");
auto delay = DelayTime::crea