UIKit 和 SpriteKit 添加 UIBezierPath 的不同结果
Different results of adding UIBezierPath in UIKit and SpriteKit
我正在尝试使用 SKShapeNode 向我的 SpriteKit 场景添加弧线。如果我用 UIView 画一条弧线,比如:
- (void)drawRect:(CGRect)rect {
UIBezierPath *path = [UIBezierPath bezierPathWithArcCenter:CGPointMake(CGRectGetMidX(self.frame),CGRectGetMidY(self.frame)) radius:64.0f startAngle:0 endAngle:M_PI*4/3 clockwise:YES];
[[UIColor greenColor] setStroke];
path.lineWidth = 2.0f;
[path stroke];
}
我得到以下信息:
我得到了我所期望的。如果我通过 SKScene 绘制类似的弧线,例如:
- (void)createCircle {
UIBezierPath *path = [UIBezierPath bezierPathWithArcCenter:CGPointZero radius:128.0f startAngle:0 endAngle:M_PI*4/3 clockwise:YES];
SKShapeNode *ring = [SKShapeNode shapeNodeWithPath:path.CGPath];
ring.name = @"ring";
ring.lineWidth = 20;
ring.strokeColor = [SKColor magentaColor];
ring.position = CGPointMake(CGRectGetMidX(self.view.bounds),CGRectGetMidY(self.view.bounds));
[self.scene addChild:ring];
}
我得到以下图片。这不是我希望看到的。它逆时针旋转。为什么我没有得到像第一张图片那样的弧线?我需要翻转轴还是什么?如果重要的话,我的开发目标是 iOS 8.4。
UIKit和SpriteKit中的2D坐标系不同
UIKit view原点在左上角。
SpriteKit view原点在左下角。
要实现相同的圆弧,修改path
UIBezierPath *path = [UIBezierPath bezierPathWithArcCenter:CGPointZero radius:128.0f startAngle:0 endAngle:-M_PI*4/3 clockwise:NO];
我正在尝试使用 SKShapeNode 向我的 SpriteKit 场景添加弧线。如果我用 UIView 画一条弧线,比如:
- (void)drawRect:(CGRect)rect {
UIBezierPath *path = [UIBezierPath bezierPathWithArcCenter:CGPointMake(CGRectGetMidX(self.frame),CGRectGetMidY(self.frame)) radius:64.0f startAngle:0 endAngle:M_PI*4/3 clockwise:YES];
[[UIColor greenColor] setStroke];
path.lineWidth = 2.0f;
[path stroke];
}
我得到以下信息:
我得到了我所期望的。如果我通过 SKScene 绘制类似的弧线,例如:
- (void)createCircle {
UIBezierPath *path = [UIBezierPath bezierPathWithArcCenter:CGPointZero radius:128.0f startAngle:0 endAngle:M_PI*4/3 clockwise:YES];
SKShapeNode *ring = [SKShapeNode shapeNodeWithPath:path.CGPath];
ring.name = @"ring";
ring.lineWidth = 20;
ring.strokeColor = [SKColor magentaColor];
ring.position = CGPointMake(CGRectGetMidX(self.view.bounds),CGRectGetMidY(self.view.bounds));
[self.scene addChild:ring];
}
我得到以下图片。这不是我希望看到的。它逆时针旋转。为什么我没有得到像第一张图片那样的弧线?我需要翻转轴还是什么?如果重要的话,我的开发目标是 iOS 8.4。
UIKit和SpriteKit中的2D坐标系不同
UIKit view原点在左上角。
SpriteKit view原点在左下角。
要实现相同的圆弧,修改path
UIBezierPath *path = [UIBezierPath bezierPathWithArcCenter:CGPointZero radius:128.0f startAngle:0 endAngle:-M_PI*4/3 clockwise:NO];