COCOS2DX 3.3动画实现

cocos2dx 3.3 animation implementation

本文关键字:实现 动画 COCOS2DX      更新时间:2023-10-16

我是Cocos2DX开发中的新手。我几乎使用CPP语言学习了Android中Cocos2DX(版本3.3)的所有基本水平。我表明cocos2dx.org。

有很多更新

在Android中,我目前正在使用Cocos2DX版本3.3开发Tetris游戏,我想知道什么是获得令人敬畏的动画的最佳方法,例如滴答炸弹,炸弹爆炸,旋转游戏得分显示,弹出和消失的气球,得分增量。我想知道使用C 在Android中的动画实现COCOS2DX。我们还需要制作支持多屏支持的游戏,我进行了搜索,所有这些要点都无法通过Google找到太多信息。

我向初学者级别显示了声纳系统的支持,我们非常感谢它,我观看了Sonar System在YouTube上共享的所有视频。我在那儿学到很多。我想知道cocos2dx中Android的提前动画。

我们寻求任何帮助。

谢谢

这是我的appmacros.h filr ..

#ifndef __APPMACROS_H__
#define __APPMACROS_H__
#include "cocos2d.h"

#define DESIGN_RESOLUTION_480X320    0
#define DESIGN_RESOLUTION_480X800    1
#define DESIGN_RESOLUTION_1024X768   2
#define DESIGN_RESOLUTION_1280X800   3
#define DESIGN_RESOLUTION_2048X1536  4
/* If you want to switch design resolution, change next line */
#define TARGET_DESIGN_RESOLUTION_SIZE  DESIGN_RESOLUTION_1280X800
typedef struct tagResource
{
    cocos2d::CCSize size;
    char directory[100];
}Resource;
static Resource smallResource  =  { CCSizeMake(480, 320),   "iphone" };
static Resource mysmallResource  =  { CCSizeMake(800, 480),   "iphone" };
static Resource mediumResource =  { CCSizeMake(1024, 768),  "ipad"   };
static Resource myResource =  { CCSizeMake(1280, 800),  "ipad" };
static Resource largeResource  =  { CCSizeMake(2048, 1536), "ipadhd" };
#if (TARGET_DESIGN_RESOLUTION_SIZE == DESIGN_RESOLUTION_480X320)
static cocos2d::CCSize designResolutionSize = cocos2d::CCSizeMake(480, 320);
#elif (TARGET_DESIGN_RESOLUTION_SIZE == DESIGN_RESOLUTION_480X800)
static cocos2d::CCSize designResolutionSize = cocos2d::CCSizeMake(800, 480);
#elif (TARGET_DESIGN_RESOLUTION_SIZE == DESIGN_RESOLUTION_1024X768)
static cocos2d::CCSize designResolutionSize = cocos2d::CCSizeMake(1024, 768);
#elif (TARGET_DESIGN_RESOLUTION_SIZE == DESIGN_RESOLUTION_2048X1536)
static cocos2d::CCSize designResolutionSize = cocos2d::CCSizeMake(2048, 1536);
#elif (TARGET_DESIGN_RESOLUTION_SIZE == DESIGN_RESOLUTION_1280X800)
static CCSize designResolutionSize = cocos2d::CCSizeMake(1280, 800);
#else
#error unknown target design resolution!
#endif
// The font size 24 is designed for small resolution, so we should change it to fit for current design resolution
#define TITLE_FONT_SIZE  (cocos2d::CCEGLView::sharedOpenGLView()->getDesignResolutionSize().width / myResource.size.width * 24)
#endif /* __APPMACROS_H__ */

现在我们可以在appdelegate中使用此类..所以我的appdelegate看起来像...

#include "AppDelegate.h"
#include "MenuLayer.h"
#include "AppMacros.h"
#include "SimpleAudioEngine.h"
#include "cocos2d.h"

USING_NS_CC;

AppDelegate::AppDelegate() {
}
AppDelegate::~AppDelegate() {
}
void AppDelegate::initGLContextAttrs()
{
    //set OpenGL context attributions,now can only set six attributions:
    //red,green,blue,alpha,depth,stencil
    GLContextAttrs glContextAttrs = {8, 8, 8, 8, 24, 8};
    GLView::setGLContextAttrs(glContextAttrs);
}
bool AppDelegate::applicationDidFinishLaunching() {
    // initialize director
    auto director = Director::getInstance();
    auto glview = director->getOpenGLView();
    if(!glview) {
        glview = GLViewImpl::create("My Game");
        director->setOpenGLView(glview);
    }
    CCLOG("%s","applicationDidFinishLaunching ");
    // initialize director
//  CCDirector* pDirector = CCDirector::sharedDirector();
//  CCEGLView* pEGLView = CCEGLView::sharedOpenGLView();
    director->setOpenGLView(glview);
    // Set the design resolution
    glview->setDesignResolutionSize(designResolutionSize.width,
            designResolutionSize.height, kResolutionFixedWidth);
    //CCSize frameSize = pEGLView->getFrameSize();
    CCSize frameSize = director->getVisibleSize();
    // if the frame's height is larger than the height of medium resource size, select large resource.
    if (frameSize.width > myResource.size.width) {
        director->setContentScaleFactor(
                largeResource.size.width / designResolutionSize.width);
    }
    // if the frame's height is larger than the height of small resource size, select medium resource.
    else if (frameSize.width > mediumResource.size.width) {
        director->setContentScaleFactor(
                myResource.size.width / designResolutionSize.width);
    } else if (frameSize.width > mysmallResource.size.width) {
        director->setContentScaleFactor(
                designResolutionSize.width / mediumResource.size.width);
    } else if (frameSize.width > smallResource.size.width) {
        director->setContentScaleFactor(
                designResolutionSize.width / mediumResource.size.width);
    }
    // if the frame's height is smaller than the height of medium resource size, select small resource.
    else {
        director->setContentScaleFactor(
                designResolutionSize.width / smallResource.size.width);
    }
    // turn on display FPS
    director->setDisplayStats(false);
    // set FPS. the default value is 1.0/60 if you don't call this
    director->setAnimationInterval(1.0 / 60);

    CCScene *pScene = MenuLayer::scene();

    director->runWithScene(pScene);

    return true;
}
// This function will be called when the app is inactive. When comes a phone call,it's be invoked too
void AppDelegate::applicationDidEnterBackground() {
    CCDirector::sharedDirector()->stopAnimation();
    // if you use SimpleAudioEngine, it must be pause
    CocosDenshion::SimpleAudioEngine::sharedEngine()->pauseBackgroundMusic();

}
// this function will be called when the app is active again
void AppDelegate::applicationWillEnterForeground() {
    CCDirector::sharedDirector()->startAnimation();
    // if you use SimpleAudioEngine, it must resume here
    CocosDenshion::SimpleAudioEngine::sharedEngine()->resumeBackgroundMusic();

}

我也是Cocos2DX 3.3的新手。好吧,我正在使用(.plist)粒子效应使用动画进行爆炸(爆炸)首先,您需要一个动画的.plist文件。有一个用于制作.plist文件的在线编辑器。你可以检查一下这是链接。http://www.effecthub.com/particle2dx

现在您可以使用代码线

CCParticleSystemQuad *system = CCParticleSystemQuad::create("explodeEffect.plist");
system->setTexture(CCTextureCache::sharedTextureCache()->addImage("yourplayer.png"));
system->setDuration(0.05);
system->setScale(3.0f);
 system->setPosition(yourplayer->getPosition().x, yourplayer->getPosition().y);
this->addChild(system,1);
system->setAutoRemoveOnFinish(true);

这将帮助您