首页 > 代码库 > 瘸腿蛤蟆笔记19-cocos2d-x-3.2 屏幕锁定精灵运动

瘸腿蛤蟆笔记19-cocos2d-x-3.2 屏幕锁定精灵运动

上篇回顾

         上篇中,蛤蟆学习了OrbitCamera的使用,并了解了其大概。虽然那个OrbitCamera::create函数中参数比较难理解,但是我们还是抽象的尝试说明了一下。呵呵,这次蛤蟆学习如何用屏幕锁定精灵的运行。

 

理论介绍

首先我们来看下 继承关系如下。

         Follow直接继承于Action类的,看上去还挺老资格的,其实也是老资格的。谁让人家辈分靠前呢。

         类的创建函数是:

static Follow* create

(

Node 

followedNode,

const Rect & 

rect Rect::ZERO 

)

参数中followedNode表示要跟随的Node。Rect表示边界,当 rect 为 Rect::ZERO时 表示没有边界.

具体步骤

         我们还是在HelloWorld.cpp文件中找到

bool HelloWorld::init()函数,加入如下代码。

 

         auto grossini =Sprite::create("grossini.png");

         addChild(grossini,0, 2);

         auto s =Director::getInstance()->getWinSize();

         grossini->setPosition(Vec2(0, s.height / 2));

    auto move =MoveBy::create(2,Vec2(s.width * 3, 0));

    auto move_back = move->reverse();

    auto seq =Sequence::create(move,move_back,nullptr);

    auto rep =RepeatForever::create(seq);

   grossini->runAction(rep);

    this->runAction(Follow::create(grossini,Rect(0, 0, s.width * 3 , s.height)));

 

编译运行后,小伙伴们发现了什么?

         没错,就是精灵运动到哪里,咱们的屏幕也跟踪到了哪里,是不是很炫?

         感觉像拍电影有没有? 蛤蟆感觉这个技能好棒,我们可以同这个来防止咱们的主角 走出屏幕哈。

 

代码解释

         下面我们来解释下代码的含义:

         auto grossini =Sprite::create("grossini.png");//添加一个精灵

         addChild(grossini,0, 2);//增加到HelloWorld层中

         auto s =Director::getInstance()->getWinSize();//获取窗口大小

         grossini->setPosition(Vec2(0, s.height / 2));//设置位置

    auto move =MoveBy::create(2,Vec2(s.width * 3, 0));//创建moveby动作

    auto move_back = move->reverse();//创建moveby的相反动作

    auto seq =Sequence::create(move,move_back,nullptr);//创建一串动作

    auto rep =RepeatForever::create(seq);//创建不断重复动作

   grossini->runAction(rep);//精灵运行该动作

this->runAction(Follow::create(grossini,Rect(0, 0, s.width * 3 , s.height)));// 这就是跟随的函数,

表示HelloWorld的层调用这个跟随,跟随的对象时grossini这个精灵,范围是一个矩形,四个定点是(0, 0, s.width * 3 , s.height)。超出个范围就不会再跟踪了。

 

 

总结

         本次蛤蟆记录Follow的基本使用,下伙伴们可以尝试下。这个Follow类还是比较有意思的哈。