一个基于cocos2d-x 3.0和Box2d的demo小程序

p图demo小应用。想怎么p就怎么p

本文參考于http://blog.csdn.net/xiaominghimi/article/details/6776096和http://www.cnblogs.com/liufan9/archive/2013/04/11/3012275.html。

于上面基于cocos2d-x 2.0不一样的地方,本本是基于cocos2d-x 3.0。

首先。当然是下载和安装cocos2d-x 3.0了,网址:http://www.cocos2d-iphone.org/download。

其次,下载Box2d,网址:https://github.com/vegerjiang/Box2d。

创建一个cocos2d的项目(怎么创建这里不重述了),添加Box2d库(直接拖到Libraries文件夹),在Build Settings->Search Paths->Head Search Paths中添加一项"$(SRCROOT)/$(PROJECT_NAME)/Libraries"。

假设能编译执行成功,说明你已经建好了一个空的基于cocos2d-x 3.0和Box2d的ios项目了。

新建一个ooc类HelloLay,这里须要注意亮点:

1.HelloLay必须继承于CCLayout。

2.HelloLay.m改名为HelloLay.mm。

具体代码请从https://github.com/vegerjiang/testBox2d下载,具体的解释请參照http://www.cnblogs.com/liufan9/archive/2013/04/11/3012275.html。

为了方面某些懒童鞋。以下把类HelloLay的.h文件和.mm文件贴出来。

p图demo小应用,想怎么p就怎么p

HelloLay.h文件

//
//  HelloLayer.h
//  testBox2d
//
//  Created by JiangHuifu on 14-5-28.
//  Copyright (c) 2014年 veger. All rights reserved.
//
#import "cocos2d.h"
#import "cocos2d-ui.h"#import "CCLayout.h"#define PTM_RATIO 32.0
@interface HelloLayer : CCLayout
+(id)scene;
@end

HelloLay.mm文件

p图demo小应用,想怎么p就怎么p

//
//  HelloLayer.m
//  testBox2d
//
//  Created by JiangHuifu on 14-5-28.
//  Copyright (c) 2014年 veger. All rights reserved.
//#import "HelloLayer.h"
#import "Box2D.h"
@interface HelloLayer(){b2World* _world;b2Body* _body;CCSprite* _ball;
}
@property(nonatomic,strong) CCSprite* ball;
@end
@implementation HelloLayer
@synthesize ball = _ball;
+(id)scene{CCScene* scene = [CCScene node];HelloLayer* layer = [HelloLayer node];[scene addChild:layer];return scene;
}
-(id)init{if (self = [super init]) {CGSize winSize = [[CCDirector sharedDirector] viewSize];//Create sprite and add it to the layout_ball = [CCSprite spriteWithImageNamed:@"ball.png"];_ball.scaleX = 52 / _ball.contentSize.width;_ball.scaleY = 52 / _ball.contentSize.height;_ball.position = ccp(100, 300);[self addChild:_ball];//Create a worldb2Vec2 gravity = b2Vec2(0.0f,-8.0f);_world = new b2World(gravity);//Create edges around the entire screenb2BodyDef groundBodyDef;groundBodyDef.position.Set(0, 0);b2Body* groundBody = _world->CreateBody(&groundBodyDef);b2EdgeShape groundEdge;b2FixtureDef boxShapeDef;boxShapeDef.shape = &groundEdge;//wall definitionsgroundEdge.Set(b2Vec2(0, 0), b2Vec2(winSize.width/PTM_RATIO, 0));groundBody->CreateFixture(&boxShapeDef);groundEdge.Set(b2Vec2(0,0), b2Vec2(0, winSize.height/PTM_RATIO));groundBody->CreateFixture(&boxShapeDef);groundEdge.Set(b2Vec2(0,winSize.height/PTM_RATIO), b2Vec2(winSize.width/PTM_RATIO,winSize.height/PTM_RATIO));groundBody->CreateFixture(&boxShapeDef);groundEdge.Set(b2Vec2(winSize.width/PTM_RATIO,winSize.height/PTM_RATIO), b2Vec2(winSize.width/PTM_RATIO, 0));groundBody->CreateFixture(&boxShapeDef);//Create ball body and shapeb2BodyDef ballBodyDef;ballBodyDef.type = b2_dynamicBody;ballBodyDef.position.Set(100/PTM_RATIO, 100/PTM_RATIO);ballBodyDef.userData = (__bridge void*)_ball;_body = _world->CreateBody(&ballBodyDef);b2CircleShape circle;circle.m_radius = 26.0/PTM_RATIO;b2FixtureDef ballShapeDef;ballShapeDef.shape = &circle;ballShapeDef.density = 1.0f;ballShapeDef.friction = 0.2f;ballShapeDef.restitution = 0.8f;_body->CreateFixture(&ballShapeDef);[self schedule:@selector(tick:) interval:0.017];[self schedule:@selector(kick) interval:5.0];self.userInteractionEnabled = YES;}return self;
}
-(void)tick:(CCTime) dt{_world->Step(dt, 10, 10);for (b2Body* b = _world->GetBodyList(); b; b=b->GetNext()) {CCSprite* ballData = (__bridge CCSprite*)b->GetUserData();ballData.position = ccp(b->GetPosition().x*PTM_RATIO,b->GetPosition().y*PTM_RATIO);ballData.rotation = -1 * CC_RADIANS_TO_DEGREES(b->GetAngle());}
}
-(void)kick{b2Vec2 force = b2Vec2(30, 30);_body->ApplyLinearImpulse(force, _body->GetPosition());
}
-(void)touchBegan:(UITouch *)touch withEvent:(UIEvent *)event{b2Vec2 force = b2Vec2(-30,30);_body->ApplyLinearImpulse(force, _body->GetPosition());
}-(void)touchEnded:(UITouch *)touch withEvent:(UIEvent *)event{NSLog(@"touchEnded");
}-(void)dealloc{delete _world;_body = NULL;_world = NULL;
}
@end

posted on 2017-05-28 20:19 mthoutai 阅读(...) 评论(...) 编辑 收藏

转载于:https://www.cnblogs.com/mthoutai/p/6916533.html

一个基于cocos2d-x 3.0和Box2d的demo小程序相关推荐

  1. 分享一个基于 ABP(.NET 5.0) + vue-element-admin 管理后台

    1.前言 分享一个基于ABP(.NET 5.0) + vue-element-admin项目.希望可以降低新手对于ABP框架的学习成本,感兴趣的同学可以下载项目启动运行一下.对于想选型采用ABP框架的 ...

  2. java license 开源_MinIO:一个基于Apache License v2.0开源协议的对象存储服务

    MinIO Quickstart Guide--快速入门 MinIO 是一个基于Apache License v2.0开源协议的对象存储服务.它兼容亚马逊S3云存储服务接口,非常适合于存储大容量非结构 ...

  3. WeiPHP5.0,公众号与小程序结合的最佳开发框架

    WeiPHP5.0,公众号与小程序结合的最佳开发框架 介绍 WeiPHP5.0是一个开源,高效,简洁的移动应用系统,它实现一个后台同时管理和运营多个客户端(公众号,微信小程序,后续将支持支付宝小程序, ...

  4. 从0到一开发微信小程序(5)—小程序WXML

    文章目录 其他相关文章 1.WXML 1.1.事件 1.1.1.系统 1.1.2.分类 1.1.2.1.冒泡事件(bindtap) 1.1.2.2.非冒泡事件(catchtap) 1.1.3.携带参数 ...

  5. 从0到一开发微信小程序(1)——申请账号并安装开发环境

    文章目录 其他相关文章 1.什么是微信小程序? 2.如何申请? 3.开发工具下载 其他相关文章 从0到一开发微信小程序(1)--申请账号并安装开发环境 从0到一开发微信小程序(2)--开发第一个小程序 ...

  6. 【微信小程序】基于Java+uniapp框架开发的全开源微信小程序商城系统

    应用介绍 基于Java+uniapp框架开发的全开源微信小程序商城系统,前端采用目前主流的uniapp框架开发,后端采用Java语言开发,前后端代码全部开源,减少重复造轮子,支持小程序商城秒杀.优惠券 ...

  7. 从0到一开发微信小程序(7)—小程序组件库(提高开发效率)

    文章目录 其他相关文章 1.组件库 1.1.TDesign 引入TDesign 使用 NPM 修改 app.json 使用组件 TDesign的应用 Rate 评分 Sticky 吸顶容器 Toast ...

  8. Towxml 3.0来了,让小程序完美支持Markdown

    Towxml 3.0来了,让小程序完美支持Markdown 查看全文 http://www.taodudu.cc/news/show-805307.html 相关文章: 数据接口的登录态校验以及JWT ...

  9. douchat 4.0 新版发布,助力小程序后台开发

    douchat是什么 douchat(中文名:豆信)是一款专为微信开发而创造的php开源框架,具有简洁.高效.优雅等特点. 新版本功能 douchat V4.0.0版本主要新增了小程序开发支持,具体包 ...

最新文章

  1. 最落寞的C9高校:从未没落
  2. 黄学东出任微软全球人工智能首席技术官!微软首位华人技术院士全面负责Azure云AI...
  3. AlphaBlend 使用方法
  4. python爬取数据存入mysql
  5. 杭电1280java实现
  6. keil5一点project就闪退
  7. 计算机连接网络名称,更改Windows Server Core计算机名字 以及配置网络连接
  8. spark on yarn 配置及异常解决
  9. 一个核物理学霸为何两次收到BlackHat的邀请
  10. add git 的文件 移除_本地删除文件后让git服务器也删除这个文件
  11. linux语言vim的下载,Vim 从入门到精通 PDF
  12. Linux 如何从网上下载文件
  13. 微信公众号开发(一)配置服务器
  14. 数据结构 图-关键路径:AOE网络
  15. scrapy爬取《坏蛋是怎样练成的4》
  16. Android 9 静默安装apk
  17. 【原创】一个线程oom,进程里其他线程还能运行吗?
  18. vue对象属性为null_vue 解决无法对未定义的值,空值或基元值设置反应属性报错问题...
  19. win7桌面上的计算机图标不见了怎么办,win7桌面图标不见了怎么办 五种解决方法分享...
  20. PicPick Pro v7.0.0 屏幕截图编辑工具解锁全功能单文件版

热门文章

  1. MongoDB ServerStatus返回信息
  2. INFO:安装包文件共享(Shared Files)设置注意事项
  3. Asp.net2.0:如何使用ObjectDataSource
  4. 浮小麦升浮之气的本质
  5. 拼多多4.5元手表使用功能图
  6. Matlab心电信号的PQRST模拟-实验报告
  7. shuffle操作图解以及job-stage-task-partition区别
  8. 数据仓库相关书籍调研
  9. hessian矩阵与鞍点关系浅析
  10. hexo的yelee主题本地搜索故障