Comment dessiner un cercle dans swift en utilisant spriteKit?

je viens de commencer à développer ios avec swift et je n'arrive pas à trouver comment dessiner un cercle. Je suis juste en train de dessiner un cercle, mettre une variable et de l'afficher sur l'écran afin que je puisse ensuite l'utiliser comme le lecteur principal. Quelqu'un pourrait-il me dire comment faire ou me fournir le code pour cela?

j'ai trouvé ce code en ligne:

var Circle = SKShapeNode(circleOfRadius: 40)
Circle.position = CGPointMake(500, 500)
Circle.name = "defaultCircle"
Circle.strokeColor = SKColor.blackColor()
Circle.glowWidth = 10.0
Circle.fillColor = SKColor.yellowColor()
Circle.physicsBody = SKPhysicsBody(circleOfRadius: 40)
Circle.physicsBody?.dynamic = true //.physicsBody?.dynamic = true
self.addChild(Circle)

mais quand je mets ça sur xcode et que j'exécute l'application, rien n'apparaît dans la scène du jeu.

19
demandé sur Mike S 2014-11-04 07:27:49

4 réponses

screenshot

si vous voulez juste dessiner un cercle simple à un certain point c'est ceci:

func oneLittleCircle(){

    var Circle = SKShapeNode(circleOfRadius: 100 ) // Size of Circle
    Circle.position = CGPointMake(frame.midX, frame.midY)  //Middle of Screen
    Circle.strokeColor = SKColor.blackColor()
    Circle.glowWidth = 1.0
    Circle.fillColor = SKColor.orangeColor()
    self.addChild(Circle)
}

Le code ci-dessous dessine un cercle où l'utilisateur touche. Vous pouvez remplacer le projet iOS SpriteKit par défaut "GameScene.swift" (avec le code ci-dessous.

screenshot

//
// Draw Circle At Touch .swift
// Replace GameScene.swift in the Default SpriteKit Project, with this code.


import SpriteKit

class GameScene: SKScene {
override func didMoveToView(view: SKView) {
    /* Setup your scene here */
    scene?.backgroundColor = SKColor.whiteColor()  //background color to white

}

override func touchesBegan(touches: NSSet, withEvent event: UIEvent) {
    /* Called when a touch begins */

    for touch: AnyObject in touches {
        let location = touch.locationInNode(self)
        makeCirlceInPosition(location)  // Call makeCircleInPostion, send touch location.
    }
}


//  Where the Magic Happens!
func makeCirlceInPosition(location: CGPoint){

    var Circle = SKShapeNode(circleOfRadius: 70 ) // Size of Circle = Radius setting.
    Circle.position = location  //touch location passed from touchesBegan.
    Circle.name = "defaultCircle"
    Circle.strokeColor = SKColor.blackColor()
    Circle.glowWidth = 1.0
    Circle.fillColor = SKColor.clearColor()
    self.addChild(Circle)
}
  override func update(currentTime: CFTimeInterval) {
    /* Called before each frame is rendered */
}}
27
répondu Voltaire's Ghost 2015-03-28 21:57:44

Swift 3

let Circle = SKShapeNode(circleOfRadius: 100 ) // Create circle
Circle.position = CGPoint(x: 0, y: 0)  // Center (given scene anchor point is 0.5 for x&y)
Circle.strokeColor = SKColor.black
Circle.glowWidth = 1.0
Circle.fillColor = SKColor.orange
self.addChild(Circle)
3
répondu Josh 2017-04-23 21:28:35

je vérifie votre code ça marche mais ce qui se passe peut-être c'est que la balle disparaît parce que vous avez la dynamique comme vraie. éteignez-le et essayez à nouveau. le ballon est l'abandon de la scène.

 var Circle = SKShapeNode(circleOfRadius: 40)
    Circle.position = CGPointMake(500, 500)
    Circle.name = "defaultCircle"
    Circle.strokeColor = SKColor.blackColor()
    Circle.glowWidth = 10.0
    Circle.fillColor = SKColor.yellowColor()
    Circle.physicsBody = SKPhysicsBody(circleOfRadius: 40)
    Circle.physicsBody?.dynamic = false //set to false so it doesn't fall off scene.
    self.addChild(Circle)
0
répondu Bill peek 2014-12-23 22:08:41

essayez ceci

var circle : CGRect = CGRectMake(100.0, 100.0, 80.0, 80.0) //set your dimension
var shapeNode : SKShapeNode = SKShapeNode()
shapeNode.path = UIBezierPath.bezierPathWithOvalInRect(circle.CGPath)
shapeNode.fillColor = SKColor.redColor()
shapeNode.lineWidth = 1 //set your border
self.addChild(shapeNode)
0
répondu Mr. Developer 2015-02-01 21:24:38