标签: cocos2d-x

如何生成-10到10范围内的随机数

你好我正在开发一个游戏,其中对象必须在随机位置的屏幕上移动.我正在使用cocos2dx框架.我的代码是

CCSize winSize = CCDirector::sharedDirector()->getWinSize();
    int minY = HelloWorld::bird->getContentSize().height/2;
    int maxY = winSize.height - HelloWorld::bird->getContentSize().height/2;
    int minX = HelloWorld::bird->getContentSize().width/2;
    int maxX = winSize.width - HelloWorld::bird->getContentSize().width/2;
    int range = maxX - minX;
    int actualY = (rand() % range) + minY;
    int actualX = (rand() % range) + minX;
    //HelloWorld::bird->setPosition(ccp(actualX, actualY));
    CCActionInterval*  actionTo = CCMoveTo::actionWithDuration(3, ccp(actualX,actualY));
    HelloWorld::runAction(actionTo);
Run Code Online (Sandbox Code Playgroud)

它正在工作但只生成正数.所以精灵正在走出屏幕.我搜索了教程,但没有得到.

android cocos2d-x

0
推荐指数
1
解决办法
2551
查看次数

如何检测由Cocos2d-x中的PhyicsEditor创建的box2d夹具内的触摸?

我的测试环境:

Xcode 4.6,新cocos2d-x + box2d项目cocos2d-2.1beta3-x-2.1.1 PhysicsEditor 1.0.10

我在PhysicsEditor cocos2dx演示的HelloWorldScene中修改了一下以使其更简单,以下是我的一些代码:

  1. initPhysics

    gravity.Set(0.0f,0.0f);

这样精灵就不会动了.

  1. 将ccTouchesEnded中的源代码替换为:

    CCTouch*pTouch =(CCTouch*)touches-> anyObject();

    CCPoint location = pTouch-> locationInView(pTouch-> view());

    CCPoint convLoc = CCDirector :: sharedDirector() - > convertToGL(location);

    b2Vec2 v = b2Vec2(convLoc.x/PTM_RATIO,convLoc.y/PTM_RATIO);

    for(b2Body*b = world-> GetBodyList(); b; b = b-> GetNext()){

    b2Fixture *f = b->GetFixtureList(); // get the first fixture
    CCSprite *sprite =(CCSprite *) b->GetUserData();
    
    if(sprite != NULL)
    {
        if(f -> TestPoint(v))
        {
            CCLog("You touched a body %d",sprite->getTag());
        }
    }
    
    Run Code Online (Sandbox Code Playgroud)

    }

问题是TestPoint只在非常小的区域内返回true(不是整个形状区域).

这是截图:

在此输入图像描述

任何人都可以建议我如何调试这个问题?谢谢

更新:显示PhysicsEditor生成的数据

在此输入图像描述

physics touch box2d cocos2d-x

0
推荐指数
1
解决办法
2559
查看次数

Cocos2d-x如何创建带有标题和字体的图像按钮

嗨,我正在将我的游戏从Corona SDK转换为Cocos2d-x 3.0 alpha.

我需要创建一个带有文本的图像按钮.在Corona SDK中它非常简单widget.newButton,它可以x, y, size, font, image在单个函数中使用所有等.

现在我在Cocos2d-x中找不到任何替代品.我发现的最接近的是MenuItemImage

auto closeItem = MenuItemImage::create(
                                    "blank.png",
                                    "blank-selected.png",
                                     CC_CALLBACK_1(HelloWorld::menuCloseCallback, this));

closeItem->setPosition(Point(origin.x + visibleSize.width - closeItem->getContentSize().width/2 , origin.y + closeItem->getContentSize().height/2));

auto menu = Menu::create(closeItem, NULL);
menu->setPosition(Point::ZERO);
this->addChild(menu, 1);
Run Code Online (Sandbox Code Playgroud)

它需要imagesevent,但我不能设置titlefont它.任何人都知道如何设置标题和字体?

iphone game-engine ios cocos2d-x

0
推荐指数
1
解决办法
8204
查看次数

在vector <string> cocos2d-x中找到一个单词

我有一个矢量word_list,我想在word_list中找到一个单词.我用的是功能

bool Mylayer::existWord(vector<string> word_list, string word)
{ 
    if (std::lower_bound(word_list.begin(), word_list.end(), word) != word_list.end())
    {
        return true;
    }
    return false;
}
Run Code Online (Sandbox Code Playgroud)

但它并不确切.有人可以告诉我为什么吗?

c++ cocos2d-x

0
推荐指数
1
解决办法
796
查看次数

如何在cocos2dx中绘制圆圈

如何在cocos2dx 3.0中绘制圆或线.

我的代码是

DrawNode *drawnode = DrawNode::create();
drawnode->drawDot(ccp(15,Director::sharedDirector()->getVisibleSize().height/2),50,Color4F(255,255,255,255));

this->addChild(drawnode);
Run Code Online (Sandbox Code Playgroud)

android cocos2d-x cocos2d-x-3.0

0
推荐指数
1
解决办法
4406
查看次数

在C++中std :: function <void(Ref*)>的含义是什么?

我遇到了这个函数的麻烦,我不知道它的含义是什么:

menuItem1->setCallback([&](cocos2d::Ref *sender)
Run Code Online (Sandbox Code Playgroud)

输入函数,参数是ccMenuCallback&:

    /** set the callback to the menu item
    * @code
    * In js,can contain two params,the second param is jsptr
    * @endcode
    * @lua NA
    */
    void setCallback(const ccMenuCallback& callback);
Run Code Online (Sandbox Code Playgroud)

typedef std::function<void(Ref*)> ccMenuCallback;
Run Code Online (Sandbox Code Playgroud)

c++ lambda cocos2d-x c++11

0
推荐指数
1
解决办法
834
查看次数

CCString在Cocos2D-x中已弃用

似乎CCString在Cocos2d-x v3.5中已弃用.我们应该用什么呢?还有,弃用的原因是什么?

cocos2d-x

0
推荐指数
1
解决办法
1842
查看次数

Cocos2dx中的类

以下几行源代码(cocos2d)

BodyNode *dataA = (BodyNode*) bodyA->GetUserData(); 
BodyNode *dataB = (BodyNode*) bodyB->GetUserData();

Class p1 = [Tuna class];
Class p2 = [Oilbarrel class];
Class p3 = [Barrelhorizontal class];


if( [dataA isKindOfClass:p1] ||[dataB isKindOfClass:p1] 
   || [dataA isKindOfClass:p2] ||[dataB isKindOfClass:p2]
   || [dataA isKindOfClass:p3] ||[dataB isKindOfClass:p3]
   ) 
{

        state1 = tBomb1Hit;
}
Run Code Online (Sandbox Code Playgroud)

你可以帮我改变cocos2dx中的上述编码吗?

c++ objective-c translate cocos2d-x

-1
推荐指数
1
解决办法
973
查看次数

Float打印出一个很大的奇怪值

所以,我创建了一个State类.在State该类的create函数中,它StateVisual通过调用StateVisual类的create函数创建一个类,并将自身作为参数传递.(参数是参考,因此没有复制).所述StateVisual然后设置参数(的State实例),因为它的父变量,它是一个状态类型的指针.

StateVisual创建函数中,一切正常.但是,当你使用它的更新方法,并尝试打印它的父级大小时,它会打印一些奇怪的值.

#ifndef STATE_H
#define STATE_H

#include "cocos2d.h"
class StateVisual;



class State {
public:

    State();
    ~State();
    static State create();
    StateVisual *visual;
    float size;
    void setSize(float);
    void update(float);
private:
    cocos2d::Scheduler* _scheduler;


};

#endif
Run Code Online (Sandbox Code Playgroud)

StateVisual.cpp

#ifndef STATE_VIS_H
#define STATE_VIS_H



#include "cocos2d.h"
#include "State.h"


class StateVisual : public cocos2d::Sprite {

public:

    StateVisual();
    ~StateVisual();

    // create a visual
    State* parent;
    static StateVisual* create(State& parent);
    cocos2d::Label* label;
    void setSize(float);
    void update(float); …
Run Code Online (Sandbox Code Playgroud)

c++ pointers cocos2d-x

-2
推荐指数
1
解决办法
95
查看次数