2017-06-27 15:30:57 Running_Guy 阅读数 367
  • Cocos2d-x 3.x项目实战:星空大战(射击类游戏)

    本课程是《从零开始掌握Cocos2d-x 3.0(基于3.0正式版) 》课程配套的项目实战课程。建议对Cocos2d-x 3.0不了解的同学先学习该课程。本课程将利用《从零开始掌握Cocos2d-x 3.0(基于3.0正式版) 》中讲解的知识开发一款射击类游戏:星空大战(与打飞机游戏类似)。从这个项目中可学习到如何利用Cocos2d-x 3.0的相关知识开发一款完整的射击类游戏。

    18567 人正在学习 去看看 李宁

在讲骨骼动画之前我们先了解一下创建骨骼动画的编辑器

Cocos Studio

cocos Studio是一套基于Cocos2d-x的免费游戏开发工具集,它能帮助开发者快速创建游戏资源,将大部分繁琐的游戏开发工作使用编辑器来快速制作,进一步帮助游戏开发者减短开发周期、提高开发效率。

Cocos Studio本身不光只是针对骨骼动画的编辑而设计的,它还提供了UI、场景和数据等信息的编辑工作。就当前的Cocos Studio而言,主要分两种,一种是Win版本的Cocos Studio,另一个则是刚刚发布不久的Mac版 Cocos Studio v1.0 alpha1。前者由UI编辑器、动画编辑器、场景编辑器和数据编辑器四部分组成,分别用于处理游戏中的UI界面、动画资源、游戏场景和游戏数据。而Mac版的Cocos Studio整合了原有的UI和动画编辑器,使小伙伴们的使用更加自由。至于想要更清楚的了解骨骼动画编辑器,可以到网上查找。

那么接下来我们介绍一下如何加载骨骼动画资源

 在Cocos2d-x程序中使用Cocos Studio动画首先需要包含相关头文件,如下

 #include "cocostudio/cocostudio.h"

 using namespace cocostudio;


创建一个骨骼动画对象,需要将动画文件和资源文件载入到程序。这里我们通过ArmatureManager动画数据管理器来加载动画。ArmatureManager本身是一个单例,它管理整个场景中的Armature。而Armature则封装了我们播放动画需要的Animation。由此可见,这是一个三层缔结的层次结构。其中ArmatureManager最大,然后是Armature,最后是Animation。

ArmatureDataManager::getInstance()->

  addArmatureFileInfo(“xxx.ExportJson”,”xxx.plist”,”xxx.png”);//三种文件

   

Armature* am1=Armature::create(“xxx”); //创建动画对象

am1 -> setTag(110);


am1->getAnimation()->play(“walk”)//播放动画   walk 只是其中的一项  

this->addChild(am1);


放动画需要根据具体地需要来播放,这样才能知道用户要播放的动画是哪一个。可以像上面代码一样指定动画名来播放动画,也可以通过指定动作编号来播放动画,如下:

am1->getAnimation()->playWithIndex(0);//播放第一组动画


//设定动画的回调函数  

am1->getAnimation()->setMovementEventCallFunc([] (Armature *ani, MovementEventType tp,const std::string & name){

if (tp==MovementEventType::COMPLETE) {

            CCLOG("tp%d,name:%s",tp,name.c_str());//可以输出检测一


           

      if(strcmp(name.c_str(), “attack”)==0) //attack为文件中的另一组动画


            {

                am1->getAnimation()->play("walk");

            }

        }

    });


//触摸后 变换动作 

auto lis=EventListenerTouchOneByOne::create();

    lis->onTouchBegan=[&](Touch* t,Event *e){

        Armature *am2=(Armature *)this->getChildByTag(110);//由于在函数中我需要通过编号来获取上面创建的对象

      am2->getAnimation()->play("stand");  //文件中的站立动画

Director::getInstance()->getEventDispatcher()

    ->addEventListenerWithSceneGraphPriority(lis, this);

原文链接:http://blog.csdn.net/qq_31301099/article/details/49668179


2013-11-04 19:37:17 kof0101 阅读数 2744
  • Cocos2d-x 3.x项目实战:星空大战(射击类游戏)

    本课程是《从零开始掌握Cocos2d-x 3.0(基于3.0正式版) 》课程配套的项目实战课程。建议对Cocos2d-x 3.0不了解的同学先学习该课程。本课程将利用《从零开始掌握Cocos2d-x 3.0(基于3.0正式版) 》中讲解的知识开发一款射击类游戏:星空大战(与打飞机游戏类似)。从这个项目中可学习到如何利用Cocos2d-x 3.0的相关知识开发一款完整的射击类游戏。

    18567 人正在学习 去看看 李宁


一、cocostudio制作Animation

1、打开cocostudio,选择Animation Editor,选择第一个DemoPlayer


2、根据提示完成项目的创建,然后到刚刚创建的项目目录DemoPlayer\Resources\testAnimationResource下拷贝到图片资源文件。如下图所示。



3、创建自己的项目,取项目名为CaAnima,右击资源下的Resources,选择导入文件,选择上面的图片资源文件。如下图


4、将图片拖拽到旁边的渲染区域,拼装成下图的样子

5、点击,给各个关节添加骨骼。添加之后右击图片,选择绑定骨骼,同时设置各骨骼之间的父子关系。最终效果图如下图




6、点击形体模式,进入动画模式。将第一帧的所有全部复制到第十五帧。如下图

7、在第六帧处,将拿枪的胳膊旋转至前方。如下图


8、保存。选择文件->导出项目,确定。如下图



9、到导出路径下,找到以下文件。

10 、cocostudio制作动画完成。

二、VS2010编写代码

1、下载cocos2dx-2.2的代码,http://www.cocos2d-x.org/download。(认为已经安装了cocos2dx的vs模板)
2、使用VS2010打开cocos2dx后,右击解决方案->添加->添加新建项目,选择Cocos2d-x模板。输入项目名称。如下图

3、选择编译所有,编译完成后,设置刚刚新建的项目为启动项目。
4、将cocostudio制作的Export文件夹复制到新建项目的resource文件夹下。
5、右击resource,选择添加->现有项,选择Export文件夹中的文件。


6、修改HelloWorldScene.cpp中的init()函数。
bool HelloWorld::init()
{
    bool bRet = false;
    do 
    {
        //////////////////////////////////////////////////////////////////////////
        // super init first
        //////////////////////////////////////////////////////////////////////////

        CC_BREAK_IF(! CCLayer::init());

	CCSize visibleSize = CCDirector::sharedDirector()->getVisibleSize();
	CCSize winSize = CCDirector::sharedDirector()->getWinSize();
	CCPoint origin = CCDirector::sharedDirector()->getVisibleOrigin();
	CCArmatureDataManager::sharedArmatureDataManager()->addArmatureFileInfo("Export/CaAnima.ExportJson");  
	CCArmature* armature = CCArmature::create("CaAnima");  
	armature->setTag(1);      
	CCPoint temp =armature->convertToNodeSpaceAR(ccp(100,100));
	armature->setScale(0.3f);
	armature->getAnimation()->playByIndex(0);	
		
	this->addChild(armature);  
	armature->setPosition(300,300);  
        bRet = true;

    } while (0);

    return bRet;
}

7、编译
(1)在文件头加入以下代码
#include "cocos-ext.h"
#pragma comment(lib,"pthreadVCE2.lib")
#pragma comment(lib,"libchipmunk.lib")
#pragma comment(lib,"libExtensions.lib")

(2)右击新建项目->属性,点击c\c++,在附加包含目录中添加$(SolutionDir)extensions,注意前后要有分号。


之后编译,运行就可以啦~~~大笑

2015-07-18 11:24:01 qq369846642 阅读数 1509
  • Cocos2d-x 3.x项目实战:星空大战(射击类游戏)

    本课程是《从零开始掌握Cocos2d-x 3.0(基于3.0正式版) 》课程配套的项目实战课程。建议对Cocos2d-x 3.0不了解的同学先学习该课程。本课程将利用《从零开始掌握Cocos2d-x 3.0(基于3.0正式版) 》中讲解的知识开发一款射击类游戏:星空大战(与打飞机游戏类似)。从这个项目中可学习到如何利用Cocos2d-x 3.0的相关知识开发一款完整的射击类游戏。

    18567 人正在学习 去看看 李宁

刚刚接触骨骼动画,所以写一篇文章记录.


1.首先先画好人物的每个部件:

哈哈,比较挫

我用的是spine1.7.03版本,比网上很多教程使用的版本都低,所以操作方法貌似有点不一样,也比较麻烦.


2.打开spine,加载每个部件的图片:


选择好路径后,spine会自动帮我们加载每张图.


3.在setup模式下摆放好位置



如果要改变叠放层序,需要在Draw_Order里拖拽先后顺序

这是已经绑定骨骼后的样子,下一步描述


4.绑定骨骼

第一根骨骼一般绑定在root节点,先点击"create",再点击下方的root节点(变成蓝色则说明成功),现在按住shift拖拽骨头,哪个部位显示白色边框就表示骨头是与这个部位绑定。

接下来的骨头每次创建都需要注意当前的父节点是哪个(即显示蓝色的骨头),如果不对则需要点击相应的骨头成为父节点。

绑定好之后可以点击“pose”移动一下骨头看看是否绑定正确。


5.制作动画

点击左上角setup变成animate模式

注意要想骨头按照你绑定的方式移动,必须先点击“pose”在移动骨头。然后不断的K动作

至于动作如何调,这里就不阐述了~


6.代码

	//添加动画
	auto walk_banana = SkeletonAnimation::createWithFile("skeleton.json", "bone.atlas");//加载
	walk_banana->addAnimation(0,"walk",true);//播放走路动画,“walk”是在spine保存动作的名字
	//walk_banana->setDebugBonesEnabled(true);//是否显示骨骼
	this->addChild(walk_banana);
非常简单,这样几步就能成功了。


2016-11-22 13:22:53 u012794461 阅读数 12257
  • Cocos2d-x 3.x项目实战:星空大战(射击类游戏)

    本课程是《从零开始掌握Cocos2d-x 3.0(基于3.0正式版) 》课程配套的项目实战课程。建议对Cocos2d-x 3.0不了解的同学先学习该课程。本课程将利用《从零开始掌握Cocos2d-x 3.0(基于3.0正式版) 》中讲解的知识开发一款射击类游戏:星空大战(与打飞机游戏类似)。从这个项目中可学习到如何利用Cocos2d-x 3.0的相关知识开发一款完整的射击类游戏。

    18567 人正在学习 去看看 李宁

在cocos2dx 中使用spine骨骼动画初探

最近在制作一款2D横版游戏,主要使用spine来做骨骼动画。
我用的是1.7版本的破解版spine,大家可以自行百度
刚打开spine就是一个样例:spineboy,我就打算用这个素材。
spine截图

右边的资源栏有两个Animation,一个是跳(jump),一个是走路(walk),界面左上角有个setup按钮,点击会切换到动作模式,如下图:
这里写图片描述

动作模式下方有七个按钮,分别是[返回开始][前一帧][倒放][正放][后一帧][返回最后][循环播放]
点击循环播放和正放,可以预览动画.

之后我们点击左上方的logo,出现主菜单,点击导出(export):
这里写图片描述

导出格式设置为JSON,导出目录任选,勾选Create Atlas,点击导出
这里写图片描述

然后我们就在导出目录看到三个文件.png .atlas和.json
这里写图片描述

这三个文件我们拷贝到cocos项目的Resource文件夹中:
这里写图片描述

切记,如果要直接使用文件名创建动画对象,那么只能拷贝到Resource根目录下,博主之前把文件拷贝到在这个文件夹下的一个[主角]文件夹,然后运行时就报错.

回到visual studio,核心代码如下:

#include "spine\spine-cocos2dx.h"
bool HelloWorld::init()
{
    if (!Layer::init())
    {
        return false;
    }

    auto skeletonNode =spine::SkeletonAnimation::createWithFile("spineboy.json", "spineboy.atlas",0.2F);//0.2是设置图片的缩放比例
    skeletonNode->setPosition(Point(400, 200));
    skeletonNode->setAnimation(0, "walk", true);//true是指循环播放walk动作
    this->addChild(skeletonNode);
    return true;
}

运行之后就是这个小男孩一直在走:

这里写图片描述

2014-07-04 23:35:43 kingsollyu 阅读数 1577
  • Cocos2d-x 3.x项目实战:星空大战(射击类游戏)

    本课程是《从零开始掌握Cocos2d-x 3.0(基于3.0正式版) 》课程配套的项目实战课程。建议对Cocos2d-x 3.0不了解的同学先学习该课程。本课程将利用《从零开始掌握Cocos2d-x 3.0(基于3.0正式版) 》中讲解的知识开发一款射击类游戏:星空大战(与打飞机游戏类似)。从这个项目中可学习到如何利用Cocos2d-x 3.0的相关知识开发一款完整的射击类游戏。

    18567 人正在学习 去看看 李宁

概述

游戏中人物的状态会发生改变,而这种改变通常要通过局部的变化来表现出来。比如获得一件装备后人物形象的改变,或者战斗中武器、防具的损坏等。这些变化的实现就要通过动态换肤来实现。在接下来的这个Demo中,点击屏幕会动态更换小人手中的武器。先上图:

Cocos2d-x 3.0 cocostudio骨骼动画的动态换肤

制作动画

我这里使用cocostudio自带的动画工程,HeroAnimation,打开。

Cocos2d-x 3.0 cocostudio骨骼动画的动态换肤

添加我们的资源
Cocos2d-x 3.0 cocostudio骨骼动画的动态换肤
Cocos2d-x 3.0 cocostudio骨骼动画的动态换肤

插入渲染资源
Cocos2d-x 3.0 cocostudio骨骼动画的动态换肤

更多内容还请移步

http://www.sollyu.com/562/

没有更多推荐了,返回首页