2015-01-22 5 views
3

UIBezierPath를 사용하여 SKShapeNode를 사용하여 원의 채워진 섹터를 그립니다. 나는 대부분의 경우에 잘 작동하지만 작은 각도에서는 모양이 완전히 채워지지 않습니다 (아크 바로 아래에 약간의 간격이 있음). 이처럼 :UIBezierPath가있는 SKShapeNode가 완전히 채워지지 않습니다.

CGPoint center = CGPointMake(500, 300) ; 

UIBezierPath *bezierPath = [UIBezierPath bezierPath]; 
[bezierPath addArcWithCenter:center radius:400 startAngle:1.825777 endAngle:2.011118 clockwise:YES]; 
[bezierPath addLineToPoint:center]; 
[bezierPath closePath]; 

SKShapeNode *shapeNode = [SKShapeNode shapeNodeWithPath:bezierPath.CGPath]; 
shapeNode.strokeColor = [UIColor whiteColor]; 
shapeNode.fillColor = [UIColor whiteColor]; 
[self addChild:shapeNode]; 

결과는 아이 패드와 시뮬레이터 (아이폰 OS 8.1)에서 동일 : 여기

enter image description here

은 내가 사용하는 코드입니다.

내가 잘못했거나 제한이나 버그가 있습니까?

이 API로이 모양을보다 정확하게 그릴 수없는 경우 SpriteKit 게임의 컨텍스트에서 그릴 수있는 다른 방법을 제안 해주십시오.

미리 감사드립니다.

답변

2

는 그것이 간격을 채워 있도록 SKShapeNode의 선폭을 증가하는 것, http://sartak.org/2014/03/skshapenode-you-are-dead-to-me.html

한 수정 사항을 참조 SKShapeNode 버그 수 있습니다.

shapeNode.lineWidth = 4

대신 같은 bezierPath를 사용하여 UIKit와 동일한 기능을 수행하고의 drawRect에서 그것을 채우기 및 스트로크 수 있습니다.

+0

간단히 그리지 않고 SpriteKit 노드가 되려면이 모양이 필요합니다. 나는 drawRect를 사용하여 그것을 어떻게 얻을 수 있는지 이해하지 못한다. 좀 더 자세히 설명해 주시겠습니까? –

+0

지금은 테스트 할 수 없지만 lineWidth> 4를 사용하여이 문제를 해결했다고 생각합니다. –

+0

drawRect에 대한 @akmidd 죄송합니다. SpriteKit 노드에서 사용할 수 없으므로 SpriteKit을 삭제하고 모든 작업을 수행했습니다. UIKit의 애니메이션/그림. – netbe