Cocos2d入门--3--小球运动

本章直接上源代码。内容不难,主要就是

HelloWorldScene.h文件:

 1 #ifndef __HELLOWORLD_SCENE_H__
 2 #define __HELLOWORLD_SCENE_H__
 3  4 #include "cocos2d.h"  5  6 class HelloWorld : public cocos2d::Layer
 7 {
 8 protected:
 9 float _angle;
10  cocos2d::Vec2 _vec;
11 public:
12 static cocos2d::Scene* createScene();
13 14 virtual bool init();
15 16 // a selector callback 17 void menuCloseCallback(cocos2d::Ref* pSender);
18 19 // implement the "static create()" method manually 20  CREATE_FUNC(HelloWorld);
21 22 virtual void update(float dt);
23 private:
24 //获取屏幕可视范围 25 float width_L;
26 float width_R;
27 cocos2d::DrawNode* ball;
28 };
29 30 #endif // __HELLOWORLD_SCENE_H__


HelloWorldScene.cpp文件:

 1 // on "init" you need to initialize your instance  2 bool HelloWorld::init()
 3 {
 4 //////////////////////////////
 5 // 1. super init first  6 if ( !Layer::init() )
 7  {
 8 return false;
 9  }
10 11 Size visibleSize = Director::getInstance()->getVisibleSize();
12 Vec2 origin = Director::getInstance()->getVisibleOrigin();
13 width_L = origin.x;
14 width_R = origin.x + visibleSize.width;
15 16 ball = DrawNode::create();
17 ball -> drawDot(Vec2(0, 0), 4, Color4F(1.0f, 1.0f, 1.0f, 1.0f));
18 19  addChild(ball);
20 ball -> setPosition(origin.x + visibleSize.width/2,origin.y + visibleSize.height/2);
21 22 //action相关的运动我们一般不是用来做游戏的运动,一般用来做游戏的变化效果。因为action不能很好的用来表现出游戏的效果
23 // dot -> runAction(RepeatForever::create(MoveBy::create(0.2, _vec*100)));
24 //
25  scheduleUpdate();
26 return true;
27 }
28 29 void HelloWorld::update(float dt){
30 ball -> setPositionX(ball->getPositionX()+5);
31 if (ball->getPositionX()<width_L-ball->getContentSize().width/2 32 || ball->getPositionX()>width_R+ball->getContentSize().width/2) {
33 ball->setPositionX(-ball->getContentSize().width/2);
34  }
35 }


然后实现的效果:

时间: 2024-10-22 21:17:58

Cocos2d入门--3--小球运动的相关文章

Cocos2d入门--3--向量的应用

小球向一个方向持续运动的Demo HelloWorldScene.h ...... //设置一个protected的属性 protected: cocos2d::Vec2 _vec; ...... HelloWorldScene.cpp //这个是通过随机数设置向量的方向 _vec.set(random(-0.1f, 1.0f), random(-1.0f, 1.0f)); //通过normalize这个标准化函数,能够使得向量的大小为1 _vec.normalize(); auto dot =

Cocos2d入门--2--三角函数的应用

其实,三角函数的知识点是初中的数学基础.但是在编程里合理的利用的话,也会很好玩的,可以制作出很多有趣的动画特效. 首先要注意的是 角度 和 弧度 的转换. 360度 = 2×PI弧度 180度 = PI弧度 所以30度的正弦函数 = sin(30/180×PI) 但是在cocos2d游戏引擎提供的sin(参数值)这里的参数值范围是在[0,1]之间. 利用三角函数的波形来控制小球的运动 关键代码: 头文件: 1 protected: 2 float _angle; cpp实现文件: 1 _angl

Cocos2d入门--1--初涉相关属性或代码

Cocos2d vision: cocos2d-x-3.8.1 万丈高楼,起于累土.对于一个游戏框架的学习,其实在于框架功能的使用积累,学会了如何在cocos2d游戏引擎的基础上使用它提供的各种功能,并灵活运用, 以及学会查阅Cocos2d官方提供的API文档.相信自己也能开发出自己喜爱或者让别人羡慕的游戏. 目录: 1>认识origin和visibleSize以及cocos2d的基础绘画类DrawNode的简单实用 2>认识 CCLOG() 3>有关schedule的使用 4>有

Cocos2d-x加速度计实例:运动的小球

下面我们通过一个实例介绍一下如果通过层加速度计事件实现访问加速度计.该实例场景如下图所示场景中有一个小球当我们把移动设备水平放置屏幕向上然后左右晃动移动设备来改变小球的位置.   下面我们再看看具体的程序代码首先看一下HelloWorldScene.h文件它的代码如下 #ifndef __HELLOWORLD_SCENE_H__ #define __HELLOWORLD_SCENE_H__ #include "cocos2d.h" #define kBall_Tag 100 ① #de

Flash中的物理运动动画编程

编程 本文译者:egoldy 文章出处: http://www.bit-101.com 文章性质:翻译 译者网站很值得一看:http://www.webstudio.com.cn/ Actionscript animation 简明教程 本教程节选自bit-101.com的未正式出版的新书making things move的新书介绍.主要内容是关于速度,加速度,弹性,缓动,摩擦力,重力等内容,这里没有非常详尽的内容,如果你想知道更详尽的内容,可以预定购买作者的新书making things m

Cocos2D-X入门(4)Touch 事件:移动精灵

在.h中声明: virtual void registerWithTouchDispatcher(void); virtual bool ccTouchBegan(CCTouch *pTouch, CCEvent *pEvent); virtual void ccTouchMoved(CCTouch *pTouch, CCEvent *pEvent); virtual void ccTouchEnded(CCTouch *pTouch, CCEvent *pEvent); virtual voi

Cocos2D-X入门(3)图片文字显示

在cocos2D-X中,一般用CCLabelTTF来显示文字: CCLabelTTF* pLabel=CCLabelTTF::create("This is a Label","Arial",24); pLabel->setPosition(ccp(mSize.width/2,mSize.height/2)); this->addChild(pLabel); 如果想要用自己设计的文字,那就要用CCLabelAtlas了,具体用法: //参数依次:文字内容

Android游戏开发学习①弹跳小球实现方法_Android

本文实例讲述了Android游戏开发学习①弹跳小球实现方法.分享给大家供大家参考.具体如下: 在学习了一点点Android之后,觉得有必要记录下来,于是就开了这个新坑,慢慢来填吧. 1.运动体Movable类 本例主要模拟了一组大小不一的球以一定的水平初速度从高处落下的运动轨迹.其中的小球为一个可移动物体Movable对象,该类中除了包含小球图片对象之外,还包括了如位置坐标.水平速度.垂直速度等一系列用于模拟小球运动的成员变量和一些方法. Movable类: package com.ball;

使用C++进行Cocos2d-x游戏开发入门过程中的要点解析_C 语言

总结了下,新手引导的要点有以下几个: 画面的变化. 触摸和按钮响应. 逻辑处理及代码组织. 下面我们就详细讲述这几个要点: 一.画面的变化. 对个这个不同的游戏的做法不尽相同,归结起来大概有这么几种: 1.画面整体变暗 这个比较简单,cocos2d就有现成接口: CCSize visibleSize = CCDirector::sharedDirector()->getVisibleSize(); //第一个参数是颜色ccc4(r,g,b,a) a取值(0~255),越大越不透明 下面两个参数为