Как быстро нарисовать круг с помощью spriteKit?

Я только начал заниматься разработкой iOS с помощью Swift и не могу понять, как нарисовать круг. Я просто пытаюсь нарисовать круг, установить для него переменную и отобразить на экране, чтобы позже использовать его в качестве основного игрока. Может ли кто-нибудь сказать мне, как это сделать или предоставить мне код для этого?

Я нашел этот код в Интернете:

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)

но когда я помещаю это в xcode и запускаю приложение, в игровой сцене ничего не появляется.


person elpita    schedule 04.11.2014    source источник
comment
В какой момент вы назвали код?   -  person ZeMoon    schedule 04.11.2014
comment
Если вы запускаете код на симуляторе iPhone, вы не можете видеть круг, поскольку его положение выходит за пределы представления. Попробуйте использовать circle.position = CGPointMake(100,100) или другое значение.   -  person ZeMoon    schedule 04.11.2014
comment
Спасибо, ZeMoon, это была глупая ошибка, которую я не заметил. Я установил его на 100 100, и теперь я его вижу. Спасибо еще раз. Также спасибо 0x141E!   -  person elpita    schedule 04.11.2014


Ответы (4)


скриншот

Если вы просто хотите нарисовать один простой круг в какой-то момент, это так:

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)
}

Приведенный ниже код рисует круг, к которому прикасается пользователь. Вы можете заменить код GameScene.swift проекта iOS SpriteKit по умолчанию на приведенный ниже.

скриншот

//
// 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 */
}}
person Voltaire's Ghost    schedule 28.03.2015
comment
В идеале вы не хотите использовать CGPointMake. В Swift предпочтительнее использовать CGPoint напрямую. - person William T Froggard; 20.07.2015

Быстрый

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
addChild(circle)
person Josh    schedule 23.04.2017

Я проверяю ваш код, он работает, но, возможно, происходит то, что мяч исчезает, потому что у вас есть динамика как истина. выключите его и попробуйте еще раз. мяч выпадает из сцены.

 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)
person Bill peek    schedule 23.12.2014

попробуй это

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)
person Mr. Developer    schedule 04.11.2014