我开始使用新的Spritekit框架在Xcode中开展我的Tower防御项目,并且我希望在玩家可以创建的任何塔周围添加一个可见半径(圆圈)。
所以我创建了以下代码:
// Place Towers
-(void)mouseUp:(NSEvent *)theEvent {
/* Called when a mouse click occurs */
CGPoint location = [theEvent locationInNode:self];
SKSpriteNode *sprite = [SKSpriteNode spriteNodeWithImageNamed:@"tower"];
sprite.position = location;
sprite.scale = 1.5;
CGContextRef myContext = [[NSGraphicsContext currentContext] graphicsPort];
CGContextAddArc(myContext, location.x, location.y, 10, 0, M_PI*2, YES);
CGContextSetRGBStrokeColor(myContext, 0, 0, 225, 0);
[self addChild:sprite];
}
我不熟悉角度和其他因素,因为我是第一次这样做,所以我只是猜测它应该是那样的。我很确定我错过了什么。
感谢您的任何建议(我等待一些批评)。
答案 0 :(得分:4)
直接来自SpriteKit编程指南:
SKShapeNode *ball = [[SKShapeNode alloc] init];
CGMutablePathRef myPath = CGPathCreateMutable();
CGPathAddArc(myPath, NULL, 0,0, 15, 0, M_PI*2, YES);
ball.path = myPath;
ball.lineWidth = 1.0;
ball.fillColor = [SKColor blueColor];
ball.strokeColor = [SKColor whiteColor];
ball.glowWidth = 0.5;
答案 1 :(得分:2)
使用CGContextStrokeEllipseInRect()
可能更容易。因此,如果你想要一个半径为10的圆,以(x,y)为中心,它将是:
const CGFloat color[] = { 0, 0, 1, 1 }; // Alpha should be 1, not 0!
CGContextSetStrokeColor (myContext, color);
CGContextStrokeEllipseInRect (myContext, CGRectMake(x - 10, y - 10, 20, 20));