瘸腿蛤蟆笔记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类还是比较有意思的哈。

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

时间: 2024-11-07 08:05:33

瘸腿蛤蟆笔记19-cocos2d-x-3.2 屏幕锁定精灵运动的相关文章

瘸腿蛤蟆笔记34-cocos2d-x-3.2 Box2d物理引擎World类介绍

上篇回顾 本篇名言:将爱的能量传送给别人,我们自己就会变成一条管道,吸纳来自上天的神圣能源.而那种玄秘体验是我们每个人都得以品尝的! [詹姆士·雷德非] 上篇中,我们学习了Box2d物理引擎dynamics模块中的Contact类,该类包含所有的接触类型.物体碰撞的具体都在该类中. 蛤蟆接着学习dynamics模块中的类,这次咱们学习World这个类. 理论介绍 World类(其实是b2World类,蛤蟆之前说过,Box2d中的类都是b2开头的)包含Body和Joint. 它管理所有的仿真允许异

瘸腿蛤蟆笔记28-cocos2d-x-3.2 Box2d物理引擎collision模块介绍

上篇回顾 本篇名言:绝不测量山的高度─除非你已到达顶峰,那时你就会知道山有多低. [哈马绍] 上篇中,我们学习了Box2d物理引擎的三大模块之一的common模块,该模块主要包含设置,内存管理和向量数学. 这次蛤蟆接着学习collison模块. 理论介绍 这个collision模块包括了shapes和函数.同时包括一个动态树和broad-phase(蛤蟆不知道怎么解释这个)用于加速碰撞系统.这个模块设计的时候是在动态系统之外使用的.        Shape 这里的shapes描述了碰撞几何,可

瘸腿蛤蟆笔记31-cocos2d-x-3.2 Box2d物理引擎Fixture类介绍

上篇回顾 本篇名言:好的木材并不在顺境中生长:风越强,树越壮. [马里欧特] 上篇中,我们学习了dynamics模块中的Body类,从定义到创建再到使用基本上都覆盖了,就差实战了(这个蛤蟆后在后面中补上的). 接下去蛤蟆继续学习dynamics模块中的类,这次咱们学习Fixture这个类. 理论介绍 我们知道Shape可以不知道Body,独立于物理仿真使用.所以Box2d需要Fixture类来将shape附加到Body.一个Body可以有1个或者多个Fixture.一个拥有多个fixture的B

瘸腿蛤蟆笔记29-cocos2d-x-3.2 Box2d物理引擎dynamics模块介绍

上篇回顾 本篇名言:奋斗.寻觅.发现,而不屈服.[诗人丁尼生] 上篇中,我们学习了Box2d物理引擎的三大模块之一的collision模块,该模块主要包含形状shape,碰撞函数和动态树等概念. 这次蛤蟆接着学习dynamics模块. 理论介绍 Dynamics模块是Box2d引擎中最复杂的,也是基本上我们打交道最多的模块了.该模块建立在common和collision模块之上,所以需要我们先了解common和collision模块. Dynamics模块包含几大类:  fixture cla

瘸腿蛤蟆笔记36-cocos2d-x-3.2 Box2d物理引擎Ray-cast使用

瘸腿蛤蟆原创笔记,欢迎转载,转载请标明出处: 上篇回顾 本篇名言:人类心灵深处,有许多沉睡的力量:唤醒这些人们从未梦想过的力量,巧妙运用,便能彻底改变一生.[澳瑞森·梅伦] 上几篇中,蛤蟆学习了Box2d物理引擎中如何将我们创建的物理体给描绘在程序里面.让我们能够看到一个非常直观的物体,便于后续进一步学习和理解. 具体步骤 我们还是使用helloworld工程. 1.  首先将\cocos2d-x-3.2\tests\cpp-tests\Classes\Box2DTestBed目录中的6个文件G

瘸腿蛤蟆笔记42-cocos2d-x-3.2 Box2d物理引擎Motor Joint

瘸腿蛤蟆原创笔记,欢迎转载,转载请标明出处: 源码下载: http://download.csdn.net/detail/notbaron/7900243 上篇回顾 本篇名言:对"战士旅行者"而言,选择其实不是去选择,而是优雅地接受"无限"的邀请.[唐望] 上篇中,蛤蟆学习了Box2d物理引擎中的持续施加力,接下去蛤蟆继续学习其他的Box2d引擎的使用.这次我们使用Box2d物理引擎来学习 Motor Joint     . 理论介绍 本次的理论知识, 咱们回顾下M

瘸腿蛤蟆笔记37-cocos2d-x-3.2 Box2dTestBed架构详解

瘸腿蛤蟆原创笔记,欢迎转载,转载请标明出处: 上篇回顾 本篇名言:凡是内心能够想到.相信的,都是可以达到的. [Napoleon Hill] 在最早的时候,蛤蟆学习过cocos2d-x示例架构.这次在这个基础上,蛤蟆要学习Box2dTestBed这个物理引擎的DEMO架构.这样大家可以自己深入研究之了. 架构详解 第一步基本类介绍 首先从我们点到controller.cpp文件中.找到第43行如下: { "Box2d - TestBed", []() { return new Box2

瘸腿蛤蟆笔记39-cocos2d-x-3.2 Box2d物理引擎自由落体实现

瘸腿蛤蟆原创笔记,欢迎转载,转载请标明出处: 上篇回顾 本篇名言:烦恼使我受着极大的影响--我一年多没有收到月俸,我和穷困挣扎:我在我的忧患中十分孤独,而且我的忧患是多么多,比艺术使我操心得更厉害! [米开朗基罗] 前段时间蛤蟆出差北京去了,好在中秋节前回来了哈哈. 上篇中,蛤蟆学习了Box2d物理引擎中的Ray-cast代码解释,接下去蛤蟆继续学习其他的Box2d引擎的使用.这次我们使用Box2d物理引擎来学习物理掉落的情况. 理论介绍 本次的理论知识基本和上次RayCast一致,需要补充如下

[cocos2dx笔记008]cocos2d 用luabridge手动绑定类

基于cocos2dx 2.2.2版本.这几天使用了cocostudio实现了,动画,骨骼动画,UI编辑,粒子效果,虽然有些不足,但已经算是非常好了.今天尝试用lua,这个非常简单,创建的时候,设置语言为lua,那就可以创建lua工程. 在cocos2d-x-2.2.2\tools\project-creator下运行: python create_project.py -project test_lua -package com.android.zdhsoft -language lua xco