为什么不使用cocos studio最新版本本的cocos2d-x开发游戏

Pages: 1/2
主题 : 如果使用Cocos开发3d游戏,千万不要用Blender,想说爱你不容易
级别: 新手上路
可可豆: 63 CB
威望: 53 点
在线时间: 11(时)
发自: Web Page
来源于&&分类
如果使用Cocos开发3d游戏,千万不要用Blender,想说爱你不容易&&&
前段时间学习使用Blender,Blender建模做动画非常牛B,又是我见识过的最好的开源建模工具。但是在用在Cocos游戏中却是不可能的原因是Blender无法正确导出Fbx格式。Cocos提供的工具Fbx-conv 要将Fbx文件转化为C3b才能在Cocos中调用具体来说无法正确导出的确切说法是导出的Fbx文件版本过低,最新的Blender导出的Fbx版本为7.1,是2012年之前的版本你的确可以导出,但是你确无法导出骨骼动画的内容,只能得到纯粹的静态模型。我曾经搜遍整个网络试图找出解决方案,最终在一个论坛中得到了结论,网友可以看看为什么Blender导出的Fbx版本低且无法带动画。大意的内容是Fbx转换需要Fbx的Sdk,并且是非gpl协议的,所以导致了无法在Blender包中实现导出,并且Blender的主要用途是开源电影,所以一直以来并没有得到重视注意看帖子的日期2012年的,对这个用来开发游戏建模的话,你可以死心了。Blender 祝你一路走好,不想和你分手,想说爱你不容易。
级别: 骑士
UID: 34816
可可豆: 468 CB
威望: 587 点
在线时间: 687(时)
发自: Web Page
国内美术都是MAX,然后是Maya,Blender真心少。
级别: 新手上路
可可豆: 69 CB
威望: 69 点
在线时间: 330(时)
发自: Web Page
Blender 的操作简直反人类,但是有些功能非常好用。
级别: 骑士
可可豆: 542 CB
威望: 542 点
在线时间: 401(时)
发自: Web Page
我记得国内不少用unity3d的团队是用Blender建模的,难道unity不需要骨骼动画或者unity自己能做骨骼动画吗?
级别: 骑士
可可豆: 1439 CB
威望: 1575 点
在线时间: 972(时)
发自: Web Page
真的不能么?   2.73 版本带的是 7.4 binary . [ 此帖被cnsoft在 12:19重新编辑 ]
图片:Screen Shot
at 12.17.51 PM.png
&/br&  待续... etc. 微博 @小糊涂cnsoft
级别: 新手上路
可可豆: 46 CB
威望: 46 点
在线时间: 185(时)
发自: Web Page
引用 引用第4楼cnsoft于 12:07发表的&&:真的不能么?   2.73 版本带的是 7.4 binary .  求会用的确认!!!
级别: 骑士
可可豆: 1439 CB
威望: 1575 点
在线时间: 972(时)
发自: Web Page
回 楼主(lwtrante) 的帖子
貌似可以导出骨骼动画啊.  已经试验了.   Blender 2.73 -  2.74 , FBX 7.4 Binary.  [ 此帖被cnsoft在 15:15重新编辑 ]
&/br&  待续... etc. 微博 @小糊涂cnsoft
级别: 新手上路
可可豆: 46 CB
威望: 46 点
在线时间: 185(时)
发自: Web Page
回 6楼(cnsoft) 的帖子
能正常给COCOS2DX使用吗?
级别: 骑士
可可豆: 1439 CB
威望: 1575 点
在线时间: 972(时)
发自: Web Page
回 7楼(android3dx) 的帖子
必须能啊. 呵呵.
&/br&  待续... etc. 微博 @小糊涂cnsoft
级别: 骑士
可可豆: 417 CB
威望: 417 点
在线时间: 551(时)
发自: Web Page
回 3楼(yixiaoqingyuz) 的帖子
国内unity基本上都是用的3dsMax和Maya建模和动画
Pages: 1/2
关注本帖(如果有新回复会站内信通知您)
苹果公司现任CEO是谁?2字 正确答案:库克
发帖、回帖都会得到可观的积分奖励。
按"Ctrl+Enter"直接提交
关注CocoaChina
关注微信 每日推荐
扫一扫 浏览移动版为什么不使用最新版本的cocos2d-x开发游戏_百度知道xiaominghimi 的BLOG
用户名:xiaominghimi
文章数:190
评论数:227
访问量:1086569
注册日期:
阅读量:5863
阅读量:12276
阅读量:346259
阅读量:1046215
51CTO推荐博文
本站文章均为原创,转载务必在明显处注明:
转载自&原文链接:&&
TargetPlatform target = getTargetPlatform();//获取当前设备类型
if (target == kTargetIpad){//如果是Ipad
if (pDirector-&enableRetinaDisplay(true)){ //如果开启高清视网膜
CCFileUtils::sharedFileUtils()-&setResourceDirectory(&../ipadhd&);
CCFileUtils::sharedFileUtils()-&setResourceDirectory(&../ipad&);
}else if (target == kTargetIphone) {//如果是iphone
if (pDirector-&enableRetinaDisplay(true))
CCFileUtils::sharedFileUtils()-&setResourceDirectory(&../hd&);
本文出自 “” 博客,请务必保留此出处
了这篇文章
类别:┆阅读(0)┆评论(0)
18:02:03 21:47:38[cocos2d-x] Cocos Code IDE入门指南 - United Game Client - 小组 - 博客园
16:16 来自
来自 CocoaChina 苹果开发中文站
Cocos Code IDE 是一个基于 Eclipse 的跨平台 IDE ,专门为 Cocos2d-x Lua & JavaScript 开发人员准备,通过此工具,你可以方便的创建游戏工程、编写并且调试代码、实时查看代码被改变后的效果,最终直接发布成一个可上架的安装包。当前发布的是 beta 版本,我们有信心将它打造成众多X-man的开发神器。
已实现的功能(1.0.0-beta):
1.简单地创建 Cocos2d-x Lua & JavaScript 工程
2.提供 Cocos2d-x Lua & JavaScript 代码提示
3.可以方便地在iOS/Mac/Android/Windows 平台上调试代码,包括iOS/Android的设备和模拟器
4.不需要进行耗时巨长的native编译就可以运行游戏代码
5.保存代码后不需要重启游戏就可以看到改动后的效果
6.打包并发布apk
暂未实现的功能(1.0.0-beta):
1.将工程打包成 ipa
2.与现有的编辑器(如CocoStudio等)集成
不会支持的特性
1.Code IDE 是为 Lua 和 Javascript 等脚本语言设计的,不支持也不打算做对C++等其他语言的支持
平台 & & & & & & & & 充分测试版本 & & & & & 主站下载(国内较慢) & & & & & & & & & & & & & & & & 国内镜像(较快)&
Mac OS X & & & & & &10.9 & & & & & & & & & & & &&& & & & & & & & & & & & & & & & & & & & & & &&&
Windows & & & & & &Win7/Win8 & & &&,&&& & &,&
如何安装:
1.安装并把/bin 添加到的系统变量中。如果你使用的是 Mac OS X 10.9,你可能需要安装这个。
2.安装 Python, 最好是2.7版本,windows用户还需要手动的将 python 路径加入到系统环境变量中。
3.开发 Cocos2d-x Lua binding 游戏请下载Cocos2d-x 3.0 stable (&&|&&)
4.开发 Cocos2d-x JavaScript binding 游戏请下载 Cocos2d-js alpha2 (&&|&)
**Note : **
1.Cocos Code IDE(1.0.0-beta)是基于Cocos2d-x 3.0 stable/Cocos2d-js alpha2 的引擎版本做的开发,其他版本的引擎在该版本的IDE上将无法工作,所以为了使用IDE请下载相应的版本的引擎。
2.引擎和所创建的工程所在的路径都不能包含非英文字符,即路径中不能包含中文。
1.如果要在 iOS Simulator 上调试,需要保证你的 Mac 上安装了 iOS Simulator
2.如果你要在 android 设备上调试,需要安装
3.如果你想要定制自己的 runtime,你需要:
目标平台 & & & & & & & & & &工具&
Mac OS X/iOS & & & & & & & XCode&
Windows & & & & & & &VS2012 或更高版本&
Android & & & & & & , ,
CocoaChina是全球最大的苹果开发中文社区,官方微信每日定时推送各种精彩的研发教程资源和工具,介绍app推广营销经验,最新企业招聘和外包信息,以及Cocos2d引擎、Cocostudio开发工具包的最新动态及培训信息。关注微信可以第一时间了解最新产品和服务动态,微信在手,天下我有!
请搜索微信号“CocoaChina”关注我们!
上一话题:
下一话题:
登录后才能评论,请先或。最新cocos2d-x 3.0博客教学 小游戏[史上最坑爹的游戏] 002第一关:关闭卡死的电脑
昨天做了主画面的选择,今天做第一关的关闭卡死的电脑,这个小游戏,这个游戏是很多的小游戏组合起来的,所以我们逐个击破,第一个游戏到底要如何做呢?
看看今天实现第一关的效果
这个第一个游戏不算太难
首先我做了一个工具类,这个类实现了精灵的动画播放
SWSpritePlayForTexturePacker.h 和 SWSpritePlayForTexturePacker.cpp
SWSpritePlayForTexturePacker.h
SWSpritePlayForTexturePacker.h
精灵播放动画,让精灵动起来
Created by 帅 印 on 13-8-17.
#ifndef __Holdtail__SWSpritePlayForTexturePacker__
#define __Holdtail__SWSpritePlayForTexturePacker__
#include cocos2d.h
using namespace cocos2d;
class SWSpritePlayForTexturePacker:public cocos2d::Sprite{
//实例化传入图片名称
static SWSpritePlayForTexturePacker *createPlay(const char *fileName,int startCount,int allCount,float sprit,bool isrun);
void playInit(const char *fileName,int startCount,int allCount,float sprit,bool isrun);
//精灵的动态表现
文件名称 文件开始位置 文件帧数
void createAnimate(const char *fileName,int startCount,int allCount,float sprit,bool isrun);
#endif /* defined(__Holdtail__SWSpritePlayForTexturePacker__) */
SWSpritePlayForTexturePacker.cpp
SWSpritePlayForTexturePacker.cpp
Created by 帅 印 on 13-8-17.
#include SWSpritePlayForTexturePacker.h
#include cocos2d.h
using namespace cocos2d;
SWSpritePlayForTexturePacker *SWSpritePlayForTexturePacker::createPlay(const char *fileName,int startCount,int allCount,float sprit,bool isrun){
SWSpritePlayForTexturePacker *spritePlay = new SWSpritePlayForTexturePacker();
if(spritePlay && spritePlay-&initWithFile(CloseSelected.png)){
spritePlay-&autorelease();
spritePlay-&playInit(fileName,startCount,allCount,sprit,isrun);
return spriteP
return NULL;
void SWSpritePlayForTexturePacker::playInit(const char *fileName,int startCount,int allCount,float sprit,bool isrun){
//创建动物的动画
createAnimate(fileName,startCount,allCount,sprit,isrun);
void SWSpritePlayForTexturePacker::createAnimate(const char *fileName,int startCount,int allCount,float sprit,bool isrun){
SpriteFrameCache *cache = SpriteFrameCache::getInstance();//获取内存中的缓冲图片
Array *arrypeople = Array::create();
char str[100]={0};
for (int i = startC i&=allC i++) {
if (i&10) {
sprintf(str, %s_0%d.png,fileName,i);
sprintf(str, %s_%d.png,fileName,i);
SpriteFrame *spfr = cache-&getSpriteFrameByName(str);
arrypeople-&addObject(spfr);
Animation *animationpeople = Animation::createWithSpriteFrames(arrypeople,sprit);
animationpeople-&createWithSpriteFrames(arrypeople);
if (isrun) {
animationpeople-&setLoops(-1);
animationpeople-&setLoops(1);
//Animate *animatepeople = Animate::create(animationpeople);
//this-&runAction(RepeatForever::create(animatepeople-&reverse()));
Animate *animate = Animate::create(animationpeople);
this-&runAction(animate);
//下面就可以做游戏的第一关咯
HistoryGame01.h 和 HistoryGame01.cpp
HistoryGame01.h
#ifndef __HistoryGame01_SCENE_H__
#define __HistoryGame01_SCENE_H__
#include cocos2d.h
USING_NS_CC;
class HistoryGame01 : public cocos2d::Layer
static cocos2d::Scene* createScene();
virtual bool init();
//判断精灵是否点击
bool isInSprite(Touch *theTouch,Sprite *sp);
bool onTouchBegan(Touch *pTouch, Event
//游戏结束
void gameover(float over);
//游戏胜利
void gamewin(float win);
void menuCloseCallback(Object* pSender);
CREATE_FUNC(HistoryGame01);
#endif // __HistoryGame01_SCENE_H__
HistoryGame01.cpp
#include HistoryGame01.h
#include SWSpritePlayForTexturePacker.h
#include ScrollViewScene.h
#include CCEventDispatcher.h
#include CCEventListenerTouch.h
USING_NS_CC;
static bool isClickGo;
Scene* HistoryGame01::createScene()
isClickGo =
auto scene = Scene::create();
auto layer = HistoryGame01::create();
scene-&addChild(layer);
bool HistoryGame01::init()
if ( !Layer::init() )
//cocos2d-x3.0中的点击事件
auto dispatcher = Director::getInstance()-&getEventDispatcher();
auto touchListener = EventListenerTouchOneByOne::create();
touchListener-&onTouchBegan = CC_CALLBACK_2(HistoryGame01::onTouchBegan, this);
dispatcher-&addEventListenerWithSceneGraphPriority(touchListener, this);
//加入背景
Size size = CCDirector::getInstance()-&getWinSize();
SpriteFrameCache *cache = SpriteFrameCache::getInstance();
cache-&addSpriteFramesWithFile(shutdown.plist);
Sprite* sprite =Sprite::createWithSpriteFrameName(background.png);
sprite-&setPosition(Point(size.width*0.5,size.height*0.5));
addChild(sprite);
//加入电脑
auto sp_company =Sprite::createWithSpriteFrameName(computer.png);
sp_company-&setPosition(Point(size.width*0.5-50,size.height*0.5));
addChild(sp_company);
//加入播放的代码动画
auto sp_codes = SWSpritePlayForTexturePacker::createPlay(code,1, 2, 0.2f,true);
sp_codes-&setPosition(Point(size.width*0.5-245,size.height*0.5+68));
sp_codes-&setTag(104);
addChild(sp_codes);
//加入电源线
auto sp_tishi =Sprite::createWithSpriteFrameName(wire.png);
sp_tishi-&setPosition(Point(size.width*0.5-95,size.height*0.5+20));
addChild(sp_tishi);
//加入电源开关
auto sp_open =Sprite::createWithSpriteFrameName(button.png);
sp_open-&setPosition(Point(size.width*0.5-376,size.height*0.5+76));
sp_open-&setTag(103);
addChild(sp_open);
//加入文字
auto sp_wenzi1 =Sprite::createWithSpriteFrameName(word_01.png);
sp_wenzi1-&setPosition(Point(size.width*0.5,size.height*0.5+200));
addChild(sp_wenzi1);
auto sp_wenzi2 =Sprite::createWithSpriteFrameName(word_02.png);
sp_wenzi2-&setPosition(Point(size.width*0.5+180,size.height*0.5+200));
addChild(sp_wenzi2);
auto sp_wenzi3 =Sprite::createWithSpriteFrameName(word_03.png);
sp_wenzi3-&setPosition(Point(size.width*0.5+360,size.height*0.5+200));
addChild(sp_wenzi3);
//加入星星播放的代码动画
auto sp_star = SWSpritePlayForTexturePacker::createPlay(star,1, 3, 0.5f,true);
sp_star-&setPosition(Point(size.width*0.5-95,size.height*0.5+40));
sp_star-&setTag(102);
addChild(sp_star);
//加入人物的代码动画(显示等待)
auto sp_people = SWSpritePlayForTexturePacker::createPlay(hero,1, 4, 0.5f,true);
sp_people-&setPosition(Point(size.width*0.5+150,size.height*0.5-20));
sp_people-&setTag(101);
addChild(sp_people);
MenuItemImage *closeItem = MenuItemImage::create();
closeItem-&setNormalSpriteFrame(cache-&spriteFrameByName(back-1.png));
closeItem-&setSelectedSpriteFrame(cache-&spriteFrameByName(back-2.png));
closeItem-&initWithTarget(this, menu_selector(HistoryGame01::menuCloseCallback));
closeItem-&setPosition(Point(80,80));
auto menu = Menu::create(closeItem, NULL);
menu-&setPosition(Point::ZERO);
this-&addChild(menu, 1);
void HistoryGame01::menuCloseCallback(Object* pSender)
CCDirector::getInstance()-&replaceScene(CCTransitionFade::create(0.5, ScrollViewScene::create()));
bool HistoryGame01::onTouchBegan(Touch *pTouch, Event
if (isInSprite(pTouch, (Sprite *)this-&getChildByTag(102))) {
//电线被点击
//隐藏当前播放动画,显示结束动画
Sprite *peo = (Sprite *)getChildByTag(101);
peo-&setOpacity(0);
//加入人物的代码动画(显示等待)
Size size = CCDirector::getInstance()-&getWinSize();
auto sp_people2 = SWSpritePlayForTexturePacker::createPlay(hero,5, 11, 0.5f,false);
sp_people2-&setPosition(Point(size.width*0.5+150,size.height*0.5-20));
addChild(sp_people2);
this-&scheduleOnce(schedule_selector(HistoryGame01::gameover), 3.0f);
}else if(isInSprite(pTouch, (Sprite *)this-&getChildByTag(103))){
//按钮被点击
//隐藏当前播放动画,显示结束动画
Sprite *peo = (Sprite *)getChildByTag(104);
peo-&setOpacity(0);
//加入人物的代码动画(显示等待)
Size size = CCDirector::getInstance()-&getWinSize();
auto sp_people2 = SWSpritePlayForTexturePacker::createPlay(computerclose,1, 5, 0.5f,false);
sp_people2-&setPosition(Point(size.width*0.5-245,size.height*0.5+68));
addChild(sp_people2);
this-&scheduleOnce(schedule_selector(HistoryGame01::gamewin), 3.0f);
bool HistoryGame01::isInSprite(Touch *theTouch,Sprite *sp){
//返回当前触摸位置得OpenGL坐标
Point touchPoint = theTouch-&getLocation();
//将世界坐标转换为当前得父View的本地坐标
Point reallyPoint = this-&getParent()-&convertToNodeSpace(touchPoint);
//获取当前基于父View的坐标系
Rect rect = sp-&boundingBox();
if (rect.containsPoint(reallyPoint)) {
//判断是否让用户再点击
if (isClickGo) {
isClickGo =
void HistoryGame01::gameover(float over){
//游戏失败
Size size = CCDirector::getInstance()-&getWinSize();
LayerColor *layer = LayerColor::create(Color4B(0, 0, 0, 200), size.width, size.height);
auto sp = Sprite::createWithSpriteFrameName(bg.png);
sp-&setPosition(Point(size.width*0.5, size.height*0.5));
layer-&addChild(sp);
LabelTTF *scorettf = LabelTTF::create(失败, MarkerFelt-Thin, 60);
scorettf-&setPosition(Point(size.width*0.5, size.height*0.5));
layer-&addChild(scorettf);
this-&addChild(layer);
void HistoryGame01::gamewin(float win){
Size size = CCDirector::getInstance()-&getWinSize();
LayerColor *layer = LayerColor::create(Color4B(0, 0, 0, 200), size.width, size.height);
auto sp = Sprite::createWithSpriteFrameName(bg.png);
sp-&setPosition(Point(size.width*0.5, size.height*0.5));
layer-&addChild(sp);
LabelTTF *scorettf = LabelTTF::create(成功, MarkerFelt-Thin, 60);
scorettf-&setPosition(Point(size.width*0.5, size.height*0.5));
layer-&addChild(scorettf);
this-&addChild(layer);
总结一下,做游戏要动用大量的脑力,跟时间,做起来也相当的废力,希望大家一起共同加油噢,今天就把源码偷偷的放出来,给大家参考参考哈。
(window.slotbydup=window.slotbydup || []).push({
id: '2467140',
container: s,
size: '1000,90',
display: 'inlay-fix'
(window.slotbydup=window.slotbydup || []).push({
id: '2467141',
container: s,
size: '1000,90',
display: 'inlay-fix'
(window.slotbydup=window.slotbydup || []).push({
id: '2467142',
container: s,
size: '1000,90',
display: 'inlay-fix'
(window.slotbydup=window.slotbydup || []).push({
id: '2467143',
container: s,
size: '1000,90',
display: 'inlay-fix'
(window.slotbydup=window.slotbydup || []).push({
id: '2467148',
container: s,
size: '1000,90',
display: 'inlay-fix'}

我要回帖

更多关于 cocos2d最新版本 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信