• cocos2dx游戏--欢欢英雄传说--添加游戏背景


    经过一段时间的学习cocos2dx,接下来我想要实践开发一个小游戏,我把它命名为“欢欢英雄传说”,项目名将取为HuanHero。
    环境:
    cocos2dx环境:cocos2d-x 3.11.1
    IDE:Code::Blocks 16.01
    项目类型:cpp项目
    首先创建一个项目:
    进入cocos2dx目录,输入:

    cocos new HuanHero -l cpp -d ./projects/

    这样便在projects目录下新建了一个项目"HuanHero"。
    进入./projects/HuanHero/目录,执行以下命令来生成一个codeblocks项目:

    cmake -G 'CodeBlocks - Unix Makefiles'

    指令运行完后可以发现在HuanHero/目录下有一个MyGame.cbp文件,双击点开(cbp是codeblocks project的简称,默认就是用codeblocks编译器打开)。
    编译前我们需要修改一下codeblocks的配置,邮件点击项目名("MyGame"图标),进入"properties..."-->"Build targets",选择"Type"为"Console application",选择"Output filename"为bin/MyGame(可以先编译,编译通过之后会出现MyGame,然后选择,或者我们自己输入MyGame即可)。
    然后点击编译按钮进行编译(第一次会比较耗时,因为程序会将以来的所有的cocos2dx的源文件进行编译&链接操作),这时候可能会提示出错,比如:
    ‘isnan’ was not declared in this scope
    解决办法是在文件的头文件下添加"using namespace std;"或者将所有的"isnan"改为"std::isnan"。
    新建的项目里面的Classes目录下默认有4个文件:
    AppDelegate.cpp,AppDelegate.h,HelloWorldScene.cpp,HelloWorldScene.h
    我们需要在游戏里面添加场景,所以需要添加一张场景背景的图片。
    我们在Resources目录下新建一个目录images,在Resources/images/目录下放入一张图片background.png。
    background.png
    (右键另存为下载)
    并修改HelloWorldScene.cpp的HelloWorld::init()函数如下:
    HelloWorld::init()

    bool HelloWorld::init()
    {
        if ( !Layer::init() )
        {
            return false;
        }
    
        auto visibleSize = Director::getInstance()->getVisibleSize();
        Vec2 origin = Director::getInstance()->getVisibleOrigin();
    
        Sprite* background = Sprite::create("images/background.png");
        background->setPosition(origin + visibleSize/2);
        this->addChild(background);
    
        return true;
    }

    其实只有添加了三行:

        Sprite* background = Sprite::create("images/background.png");
        background->setPosition(origin + visibleSize/2);
        this->addChild(background);

    首先通过背景图片"images/background.png"生成了一个精灵,然后把这个精灵作为子节点加入到了HelloWorld(this)中。
    然后运行程序,效果如下:

  • 相关阅读:
    while循环和do while循环的基本使用和区别
    less框架简介
    css关联选择器大致类型总结
    渐进增强和优雅降级
    行,行内元素与块级元素有什么不同?
    for循环的大概遍历运用
    JDBC连接mysql数据库并进行简单操作
    Java实现杨辉三角
    replaceAll() 方法
    java抽象类和接口的区别
  • 原文地址:https://www.cnblogs.com/moonlightpoet/p/5555952.html
Copyright © 2020-2023  润新知