如何从RenderTexture cocos2d-x v3.2创建精灵?

时间:2014-12-28 23:38:38

标签: cocos2d-x cocos2d-x-3.0

我正在尝试制作一款游戏,该游戏将采用用户在屏幕上绘制的内容并使用物理主体创建精灵。我环顾四周,看到一个教程证明了这一点。不幸的是,该教程是在Cocos2d-x v2中完成的。

http://build-failed.blogspot.com/2012/08/freehand-drawing-with-cocos2d-x-and.html

这是我所指的教程。

http://www.cocos2d-x.org/wiki/Render_To_Texture

我尝试使用cocos2d-x教程来帮助我,但它已被标记为过时(无论如何我尝试了它并且它不起作用)。是否仍然可以允许用户绘制此方法?或者我是否需要找到另一种允许用户绘制精灵的方法?任何的意见都将会有帮助。感谢。

void GameScene::onTouchMoved(cocos2d::Touch *touch, cocos2d::Event *event)
{
    Point start = touch->getLocation();
    start = Director::getInstance()->convertToGL(start);
    Point end = touch->getPreviousLocation();
    end = Director::getInstance()->convertToGL(end);

    target->begin();

    float distance = start.getDistance(end);

    for (int i = 0; i < distance; i++)
    {
        float difx = end.x - start.x;
        float dify = end.y - start.y;
        float delta = (float) i / distance;
        brush->setPosition(Point(start.x + (difx * delta), start.y + (dify * delta)));
        brush->visit();
    }
    target->end();
}

void GameScene::onTouchEnded(cocos2d::Touch *touch, cocos2d::Event *event)
{
    myObjectSprite = Sprite::createWithTexture(target->getSprite()->getTexture());
    myObjectSprite->setPosition(Point(visibleSize.width / 2, visibleSize.height / 2));
    this->addChild(myObjectSprite);
}

这是我从这些链接收集的内容。我可以画,但有一些问题。

  1. 第一次绘制尝试始终水平反映在屏幕中央。
  2. 在几张图纸之后,fps开始下降,应用程序开始占用大量内存和CPU使用量。
  3. 使用onTouchMoved方法中的for循环是因为onTouchEnded方法调用的速度不够快,因此onTouchMethod获取的每个点之间通常存在很大的差距。该循环用于在每个点之间的线中绘制画笔精灵以防止间隙。但是,出于某种原因,它并没有介入差距。
  4. 此外,在第一个链接中,人使用来自box2d的b2PolygonShape和b2FixtureDef。 cocos2d-x v3中的类的新名称是什么?

0 个答案:

没有答案