我使用DrawNode作为建议来绘制多边形,但问题是它没有正确绘制,因为我喜欢附加所需多边形形状的图像和输出错误的代码输出。 代码:
if (sprite && sprite->init())
{
sprite->setTextureRect( Rect(0, 0, 200 ,200) );
sprite->autorelease();
auto draw = DrawNode::create();
{
Point Block1[] = {
Point(0,0),
Point(30,0),
Point(50,10),
Point(80,10),
Point(100,0),
Point(200,0),
Point(200,40),
Point(100,40),
Point(80,50),
Point(50,50),
Point(30,40),
Point(0,40)
};
draw->drawPolygon(Block1,12 ,Color4F(1,222,120,1), 1, Color4F(0,0,1,1));
}
sprite->addChild(draw, 10);
}
else
{
CC_SAFE_DELETE(sprite);
}
这是代码输出错误
这是我喜欢绘制的多边形(不要介意颜色)
答案 0 :(得分:5)
我知道,从Cocos2d-iphone v3的第一个版本开始,它仍然不支持凹多边形。因此,您可能需要对多边形进行三角测量,然后绘制drawPolygon。我用库poly2tri(https://code.google.com/p/poly2tri/)和一个简单的Triangulation C ++类(http://www.flipcode.com/archives/Efficient_Polygon_Triangulation.shtml)完成了这个。如果你没有透明度,这两个工作都很好,但如果你使用透明度,一点点混叠会产生奇怪的效果,因为三角形有很小的重叠量。
我知道cocos2d-iphone将在不久的将来支持凹多边形(我可以在其中一个分支中看到它重写渲染器。)
答案 1 :(得分:2)