我一直在钻研Apple的新Sprite Kit,并且已经使用了一段时间了。
但是在尝试为SKShapeNode
绘制弯曲路径时遇到了问题。它似乎只是绘制一条直线。
以下是我遇到的问题的一个非常简单的示例 - 尝试为CGPath
绘制SKShapeNode
:
CGMutablePathRef path = CGPathCreateMutable();
CGPathMoveToPoint(path, NULL, 0, 0);
CGPathAddQuadCurveToPoint(path, NULL, 50, 100, 100, 0);
CGPathAddLineToPoint(path, NULL, 50, -100);
CGPathCloseSubpath(path);
SKShapeNode *shape = [[SKShapeNode alloc]init];
shape.path = path;
[self addChild:shape];
CGPathRelease(path);
这是我的ASCII艺术作品(抱歉我没有足够的声誉来发布实际图片):
---------------------------------------------------------------------------------
| EXPECTED RESULT | ACTUAL RESULT |
---------------------------------------------------------------------------------
| | |
| __----__ | |
| / \ <- Curve | ? |
| / \ | ____________ |
| \ / | \ / |
| \ / | \ / |
| \ / | \ / |
| \ / | \ / |
| \ / | \ / |
| \/ | \/ |
---------------------------------------------------------------------------------
正如您所看到的,它并没有从这行代码中绘制出我想要的曲线:
CGPathAddQuadCurveToPoint(path, NULL, 50, 100, 100, 0);
我尝试使用CGPathAddArcToPoint(...)
,它可以使用,并且在这个例子中将是一个很好的替代品。但是,根据我的实际需要,我需要能够绘制四边形曲线。
除了CGPathAddQuadCurveToPoint(...)
以及CGPathAddCurveToPoint(...)
之外,CGPath似乎正在绘制所有内容,而不是在点之间画一条直线。
有谁知道这是什么问题?或者这是Sprite Kit的错误?
答案 0 :(得分:2)
“y”应该是曲线的高度,尝试给它一个非零值。 通过给出一个坐标,它无法知道曲线应该有多陡峭。这就是身高
CGPathAddQuadCurveToPoint(path, NULL, 50, 100, 100, 30);