25.cocos2d-x物理引擎(每点击一次屏幕添加一个小球)

25.cocos2d-x物理引擎(每点击一次屏幕添加一个小球),第1张

概述HelloWorldScene.h文件: #ifndef __HELLOWORLD_SCENE_H__#define __HELLOWORLD_SCENE_H__#include "cocos2d.h"USING_NS_CC;class HelloWorld : public cocos2d::Layer{public: // there's no 'id' in cpp,

HelloWorldScene.h文件:

#ifndef __HELLOWORLD_SCENE_H__#define __HELLOWORLD_SCENE_H__#include "cocos2d.h"USING_NS_CC;class HelloWorld : public cocos2d::Layer{public:    // there's no 'ID' in cpp,so we recommend returning the class instance pointer    static cocos2d::Scene* createScene();    // Here's a difference. Method 'init' in cocos2d-x returns bool,instead of returning 'ID' in cocos2d-iphone    virtual bool init();    //1.重写进入时的方法    voID onEnter();    //2.给世界添加PhysicsBody    voID addEdges();    //3.添加一个小球    voID addBall(float positionX,float positionY);    voID addBall(cocos2d::Vec2 position);    // implement the "static create()" method manually    CREATE_FUNC(HelloWorld);private:    Size visiableSize;};#endif // __HELLOWORLD_SCENE_H__

HelloWorldScene.cpp文件:

#include "HelloWorldScene.h"#include "cocostudio/CocoStudio.h"#include "ui/CocosGUI.h"USING_NS_CC;using namespace cocostudio::timeline;Scene* HelloWorld::createScene(){    //1.有物理引擎世界的Scene    auto scene = Scene::createWithPhysics();    //2.输出全部的调试信息    scene->getPhysicsWorld()->setDeBUGDrawMask(PhysicsWorld::DEBUGDRAW_ALL);    // 'layer' is an autorelease object    auto layer = HelloWorld::create();    // add layer as a child to scene    scene->addChild(layer);    // return the scene    return scene;}// on "init" you need to initialize your instancebool HelloWorld::init(){    //////////////////////////////    // 1. super init first    if ( !Layer::init() )    {        return false;    }    auto rootNode = csloader::createNode("MainScene.csb");    visiableSize = Director::getInstance()->getVisibleSize();    addChild(rootNode);    return true;}voID HelloWorld::onEnter(){    Layer::onEnter();    addEdges();    //正中间放置一个小球    addBall(visiableSize.wIDth / 2,visiableSize.height / 2);    //3.添加点击监听事件    auto Listener = EventListenertouchOneByOne::create();    Listener->ontouchBegan = [this](touch *t,Event *e) {        //4.点击位置添加一个小球        this->addBall(t->getLocation());        return false;    };    Director::getInstance()->getEventdispatcher()->addEventListenerWithSceneGraPHPriority(Listener,this);}voID HelloWorld::addEdges(){    //宽高、设置边框大小、3    auto body = PhysicsBody::createEdgeBox(visiableSize,PHYSICSBODY_MATERIAL_DEFAulT,3);    auto edgeShape = Node::create();    edgeShape->setPhysicsBody(body);    edgeShape->setposition(visiableSize.wIDth/2,visiableSize.height/2);    addChild(edgeShape);}voID HelloWorld::addBall(float positionX,float positionY){    auto ball = Sprite::create("ball1.png");    ball->setPhysicsBody(PhysicsBody::createBox(ball->getContentSize()));    ball->setposition(positionX,positionY);    addChild(ball);}voID HelloWorld::addBall(cocos2d::Vec2 position){    addBall(position.x,position.y);}
总结

以上是内存溢出为你收集整理的25.cocos2d-x物理引擎(每点击一次屏幕添加一个小球)全部内容,希望文章能够帮你解决25.cocos2d-x物理引擎(每点击一次屏幕添加一个小球)所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1076600.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-26
下一篇 2022-05-26

发表评论

登录后才能评论

评论列表(0条)

保存