рддреЛ рдХреНрдпрд╛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ SpriteKit рд╣реИ?
SpriteKit рдПрдХ 2D рдЗрдВрдЬрди рд╣реИ рдЬреЛ Apple рдЙрдкрдХрд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП рдЧреЗрдо рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдиреБрдХреВрд▓рд┐рдд рд╣реИред рдпрд╣ рд▓реЛрдХрдкреНрд░рд┐рдп рдмреЙрдХреНрд╕ 2 рдбреА рднреМрддрд┐рдХреА рдЗрдВрдЬрди рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИред рдЪреВрдВрдХрд┐ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдиреЗ рдЗрд╕реЗ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ Apple рдЙрдкрдХрд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП рдмрдирд╛рдпрд╛ рдерд╛, рдЗрд╕рд▓рд┐рдП рдпрд╣ рдмрд╛рдХреА рдЗрдВрдЬрдиреЛрдВ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдмреЗрд╣рддрд░ рдкреНрд░рджрд░реНрд╢рди рдХрд░рддрд╛ рд╣реИред
SpriteKit рдореЗрдВ, OpenGl рдЧреНрд░рд╛рдлрд┐рдХреНрд╕ рдХреЗ рдЕрдиреБрдХреВрд▓рди рдФрд░ рдбреНрд░рд╛рдЗрдВрдЧ рдХреА рдкреВрд░реА рднреВрдорд┐рдХрд╛ рд▓реЗрддрд╛ рд╣реИ, рдпрд╣ рд╕рдм рдирд┐рдореНрди рд╕реНрддрд░ рдкрд░ рд╣реЛрддрд╛ рд╣реИ, рдФрд░ рдЗрд╕рд▓рд┐рдП рдЖрдк рдЙрдЪреНрдЪ рд╕реНрддрд░ рдХреА рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдФрд░ рдмрдбрд╝реЗ 2D рдЧреЗрдореНрд╕ рдмрдирд╛рдиреЗ рдкрд░ рдЕрдкрдиреЗ рдкреНрд░рдпрд╛рд╕реЛрдВ рдкрд░ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд╕реНрдкреНрд░рд╛рдЗрдЯрдХрд┐рдЯ рдкрд░ рдЧреЗрдо рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдСрдмреНрдЬреЗрдХреНрдЯрд┐рд╡-рд╕реА рд▓реИрдВрдЧреНрд╡реЗрдЬ рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди iOS 8 рдФрд░ рдирдИ рд╕реНрд╡рд┐рдлреНрдЯ рд▓реИрдВрдЧреНрд╡реЗрдЬ рдХреЗ рд░рд┐рд▓реАрдЬ рдХреЗ рд╕рд╛рде рдЗрд╕ рдкрд░ рдЧреЗрдореНрд╕ рднреА рдмрдирд╛рдП рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВред
рдореИрдВ рдЕрдкрдиреЗ рджрдо рдкрд░ рдЬреЛрдбрд╝рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ рдХрд┐ рдХреБрдЫ рддрд░реАрдХреЛрдВ рд╕реЗ рд╕реНрд╡рд┐рдлреНрдЯ рдкрд░ рд▓рд┐рдЦрдирд╛ рдФрд░ рднреА рдЖрд╕рд╛рди рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрджрд┐ рдЖрдк рдЕрднреА рд╢реБрд░реВ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдФрд░ рд╕реЛрдЪ рд░рд╣реЗ рд╣реИрдВ рдХрд┐ рдХрд┐рд╕ рднрд╛рд╖рд╛ рдХрд╛ рдЪрдпрди рдХрд░рдирд╛ рд╣реИ, рддреЛ рдореИрдВ рдЖрдкрдХреЛ рд╕реНрд╡рд┐рдлреНрдЯ рдЪреБрдирдиреЗ рдХреА рд╕рд▓рд╛рд╣ рджреЗрддрд╛ рд╣реВрдВред
рдиреАрдЪреЗ, рдореИрдВрдиреЗ SpriteKit рдХреЗ рдЧреЗрдордкреНрд▓реЗ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддреЗ рд╣реБрдП рдПрдХ рд╡реАрдбрд┐рдпреЛ рдкреНрд░рджрд╛рди рдХрд┐рдпрд╛ рд╣реИ, рдпрджрд┐ рдЖрдк рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХрд╛ рд╕реНрд╡рд╛рдЧрдд рд╣реИред
рд╢реБрд░реБрдЖрдд
рддреЛ рдЪрд▓рд┐рдП рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИ, Xcode рдЦреЛрд▓рддреЗ рд╣реИред
рдПрдХ рдирдпрд╛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдмрдирд╛рдПрдВ, рдЬрдм рдЖрдкрдХреЛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЯреЗрдореНрдкрд▓реЗрдЯ рдХрд╛ рдЪрдпрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣рд╛ рдЬрд╛рдП, рддреЛ рдЧреЗрдо рдЪреБрдиреЗрдВред
рдЕрдЧрд▓рд╛, рдбреЗрдЯрд╛ рджрд░реНрдЬ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдЖрдкрдХреЛ рдПрдХ рднрд╛рд╖рд╛ рдЪреБрдирдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░реЗрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛: рдпрд╣ рдпрд╛ рддреЛ рдСрдмреНрдЬреЗрдХреНрдЯрд┐рд╡-рд╕реА рд╣реИ , рдпрд╛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдирдпрд╛ рд╕реНрд╡рд┐рдлреНрдЯ рд╣реИ ред
рдЖрдк рдХреЛрдИ рднреА рдЪреБрди рд╕рдХрддреЗ рд╣реИрдВ, рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рдЙрджрд╛рд╣рд░рдг рджреЛрдиреЛрдВ рдкрд░ рд╣реЛрдВрдЧреЗред
рдЗрд╕рдХреЗ рдмрд╛рдж, рдЧреЗрдо рдЯреЗрдХреНрдиреЛрд▓реЛрдЬреА рдХреЗ рддрд╣рдд рд╕реНрдкреНрд░рд╛рдЗрдЯрдХрд┐рдЯ рдХрд╛ рдЪрдпрди рдХрд░реЗрдВред
рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЙрд╕ рдЙрдкрдХрд░рдг рдХреЛ рдЪреБрдирдирд╛ рди рднреВрд▓реЗрдВ рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рдЖрдк рд▓рд┐рдЦрдиреЗ рдЬрд╛ рд░рд╣реЗ рд╣реИрдВ, рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдпрд╣ Iphone рд╣реИред
рдЗрд╕рд▓рд┐рдП, рд╣рдордиреЗ рдЕрдкрдирд╛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдмрдирд╛рдпрд╛, рдмрд╛рдИрдВ рдУрд░ рд╣рдо рдСрдмреНрдЬреЗрдХреНрдЯрд┐рд╡-рд╕реА рдХреЗ рд▓рд┐рдП рдЕрдкрдиреА рдлрд╛рдЗрд▓ рджреЗрдЦрддреЗ рд╣реИрдВ:
рдСрдмреНрдЬреЗрдХреНрдЯрд┐рд╡-рд╕реА
рд╕реНрд╡рд┐рдлреНрдЯ рдХреЗ рд▓рд┐рдП :
рддреАрд╡реНрд░
рдЬреИрд╕рд╛ рдХрд┐ рдЖрдкрдиреЗ рдкрд╣рд▓реЗ рд╣реА рджреЗрдЦрд╛ рд╣реИ, рд╕реНрд╡рд┐рдлреНрдЯ рдХреЗ рд╕рд╛рде рдПрдХ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рдХреБрдЫ рдлрд╛рдЗрд▓реЗрдВ рдЖрдзреА рд╣реИрдВред
рдмрд╛рдИрдВ рдУрд░ рд╣рдо рджреЗрдЦрддреЗ рд╣реИрдВ:
1) AppDelegate рд╣рдорд╛рд░реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐ рд╣реИред
2) GameViewController - рд╣рдорд╛рд░реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рдирд┐рдпрдВрддреНрд░рдХред 3) GameScene рд╣рдорд╛рд░реЗ рдЦреЗрд▓ рдХрд╛ рдореБрдЦреНрдп рджреГрд╢реНрдп рд╣реИред 4) GameScene.sks рд╣рдорд╛рд░реЗ рджреГрд╢реНрдп рдХрд╛ рдПрдХ рджреГрд╢реНрдп рдирд┐рд░реНрдорд╛рддрд╛ рд╣реИ, рдЗрд╕реЗ iOS 8 рдХреА рд░рд┐рд▓реАрдЬ рдХреЗ рд╕рд╛рде рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ рдерд╛, рдХреБрдЫ рддрддреНрд╡реЛрдВ рдХреЛ рдиреЗрддреНрд░рд╣реАрди рд░реВрдк рд╕реЗ рдЬреЛрдбрд╝рдиреЗ рдХрд╛ рдХрд╛рд░реНрдп рдХрд░рддрд╛ рд╣реИред |
рдЖрдЗрдП рдХреБрдЫ рдлрд╛рдЗрд▓реЛрдВ рдХреЛ рджреЗрдЦреЗрдВ рдФрд░ рджреЗрдЦреЗрдВ рдХрд┐ рдЙрдирдХреЗ рдЕрдВрджрд░ рдХреНрдпрд╛ рд╣реИред
GameViewController
GameViewController - рд╡рд╣ рд╣рдорд╛рд░реЗ рджреГрд╢реНрдп рдХреЛ рдмрдирд╛рдиреЗ рдФрд░ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реИред рд╣рдорд╛рд░реЗ рджреГрд╢реНрдп рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХреА рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рд╕рднреА рдкреНрд░рд╛рд░рдВрднрд┐рдХ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЛ рдпрд╣рд╛рдВ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, GameViewController рдореЗрдВ рд╣реЛрдиреЗ рд╡рд╛рд▓реА рд╕рднреА рдЪреАрдЬреЗрдВ рджреЛрдиреЛрдВ рднрд╛рд╖рд╛рдУрдВ рдХреЗ рд▓рд┐рдП рд╕рдорд╛рди рд╣реИрдВ:
рдмрд╣реБрдд рд╢реБрд░реБрдЖрдд рдореЗрдВ, рд╡рд┐рдзрд┐ рдпрд╛ рдлрд╝рдВрдХреНрд╢рди рд╡реНрдпреВрдбреАрдбрд▓рдб рдХреЛ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ ред
рдЗрд╕ рдкрджреНрдзрддрд┐ рдпрд╛ рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ, рдХреНрдпрд╛ рд╣реЛрддрд╛ рд╣реИ: рд╣рдорд╛рд░реЗ рджреГрд╢реНрдп рдФрд░ рдЗрд╕рдХреЗ рдкреНрд░рджрд░реНрд╢рди рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рдмрдирд╛рдирд╛ рдФрд░ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛ред
рдСрдмреНрдЬреЗрдХреНрдЯрд┐рд╡-рд╕реА
- (void)viewDidLoad { [super viewDidLoad]; // Configure the view. SKView * skView = (SKView *)self.view; // SKView View. skView.showsFPS = YES; // skView.showsNodeCount = YES; // Node ( ). /* Sprite Kit applies additional optimizations to improve rendering performance */ skView.ignoresSiblingOrder = YES;// // Create and configure the scene. GameScene *scene = [GameScene unarchiveFromFile:@"GameScene"]; // . scene.scaleMode = SKSceneScaleModeAspectFill; // ScaleMode Scene SKSceneScaleModeAspectFill. // Present the scene. // presentScene, skView [skView presentScene:scene]; }
рддреАрд╡реНрд░
override func viewDidLoad() { super.viewDidLoad() // if let scene = GameScene.unarchiveFromFile("GameScene") as? GameScene // GameScene { // Configure the view. let skView = self.view as SKView // SKView UIView skView.showsFPS = true // skView.showsNodeCount = true // Node ( ). /* Sprite Kit applies additional optimizations to improve rendering performance */ skView.ignoresSiblingOrder = true // /* Set the scale mode to scale to fit the window */ scene.scaleMode = .AspectFill // ScaleMode Scene AspectFill. // presentScene, skView skView.presentScene(scene) } }
рдмрд╣реБрдд рд╢реБрд░реБрдЖрдд рдореЗрдВ, рдЗрд╕ рдкрджреНрдзрддрд┐ рдпрд╛ рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ SKView рдкреНрд░рдХрд╛рд░ рдХреЗ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реВрдЪрдХ рдпрд╛ рд╕реНрдерд┐рд░ рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рд╡рд░реНрддрдорд╛рди рджреГрд╢реНрдп рдХреЛ рдЗрд╕реЗ рд╕реМрдВрдкрд╛ рдЬрд╛рддрд╛ рд╣реИред
SKView UIView рдХрд╛ рд╡рдВрд╢рдЬ рд╣реИ, рдпрд╣ рд╣рдорд╛рд░реЗ рджреГрд╢реНрдп рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХрд╛ рдХрд╛рд░реНрдп рдХрд░рддрд╛ рд╣реИред
рдЕрдЧрд▓рд╛ рд╣рдорд╛рд░реЗ SKView рдХреЗ рдореВрд▓ рдЧреБрдгреЛрдВ рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░ рд░рд╣рд╛ рд╣реИ:
showFPS - рдпрд╣ рдЧреБрдг рд╣рдорд╛рд░реЗ рджреГрд╢реНрдп рдХреА рддрд╛рдЬрд╝рд╛ рджрд░ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИред
showNodeCount - рдиреЛрдб рдХреА рд╕рдВрдЦреНрдпрд╛ (рд╣рдорд╛рд░реЗ рджреГрд╢реНрдп рдореЗрдВ рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕) рджрд┐рдЦрд╛рддрд╛ рд╣реИред ignoressSiblingOrder - рд░реЗрдВрдбрд░рд┐рдВрдЧ рдкреНрд░рджрд░реНрд╢рди рдХреЛ рдмреЗрд╣рддрд░ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрддрд┐рд░рд┐рдХреНрдд рдЕрдиреБрдХреВрд▓рди рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИред рд╕реВрдЪреАрдмрджреНрдз рд▓реЛрдЧреЛрдВ рдХреЗ рдЕрд▓рд╛рд╡рд╛, SKView рдХреЗ рдкрд╛рд╕ рдХрдИ рдЕрдиреНрдп рдЙрдкрдпреЛрдЧреА рдЧреБрдг рд╣реИрдВ, рджреЗрдЦреЛ рдФрд░ рдЙрдирдХреЗ рд╕рд╛рде рдкреНрд░рдпреЛрдЧ рдХрд░реЗрдВ! |
рдЗрд╕рдХреЗ рдмрд╛рдж рд╣рдорд╛рд░реЗ рджреГрд╢реНрдп рдХреА рд╡рд╕реНрддреБ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рд╣реЛрддрд╛ рд╣реИ - GameScene ред рд╕реНрд╡рд┐рдлреНрдЯ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ , рдпрд╣ рд╣рдорд╛рд░реЗ рд╡реНрдпреВ рдХреЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рд╕реЗ рдкрд╣рд▓реЗ рд╣реА рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдерд╛ред
рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, рд╣рдорд╛рд░реЗ рджреГрд╢реНрдп рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рдПрдХ рд╡рд┐рдзрд┐ рдпрд╛ рдлрд╝рдВрдХреНрд╢рди рдХреЙрд▓ рдХреЗ рд╕рд╛рде рдЖрд░рдВрдн рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:
рдСрдмреНрдЬреЗрдХреНрдЯрд┐рд╡-рд╕реА
+ (instancetype)unarchiveFromFile:(NSString *)file { /* Retrieve scene file path from the application bundle */ NSString *nodePath = [[NSBundle mainBundle] pathForResource:file ofType:@"sks"]; /* Unarchive the file to an SKScene object */ NSData *data = [NSData dataWithContentsOfFile:nodePath options:NSDataReadingMappedIfSafe error:nil]; NSKeyedUnarchiver *arch = [[NSKeyedUnarchiver alloc] initForReadingWithData:data]; [arch setClass:self forClassName:@"SKScene"]; SKScene *scene = [arch decodeObjectForKey:NSKeyedArchiveRootObjectKey]; [arch finishDecoding]; return scene; }
рддреАрд╡реНрд░
class func unarchiveFromFile(file : NSString) -> SKNode? { let path = NSBundle.mainBundle().pathForResource(file, ofType: "sks") var sceneData = NSData.dataWithContentsOfFile(path, options: .DataReadingMappedIfSafe, error: nil) var archiver = NSKeyedUnarchiver(forReadingWithData: sceneData) archiver.setClass(self.classForKeyedUnarchiver(), forClassName: "SKScene") let scene = archiver.decodeObjectForKey(NSKeyedArchiveRootObjectKey) as GameScene archiver.finishDecoding() return scene }
рдХреНрдпрд╛ рд╣реЛрддрд╛ рд╣реИ рдЬрдм рдЗрд╕реЗ рдмреБрд▓рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдпрд╣ рд╣рдорд╛рд░реЗ рджреГрд╢реНрдп рдирд┐рд░реНрдорд╛рддрд╛ GameScene.sks рдХреА рдлрд╝рд╛рдЗрд▓ рдкрд╛рддрд╛ рд╣реИ , рдлрд┐рд░ рдЗрд╕реЗ рдЕрдирдЬрд╝рд┐рдк рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдлрд┐рд░ рд╣рдорд╛рд░реЗ рджреГрд╢реНрдп рдХреЗ рдмрд╛рдж рдХреЗ рдкреНрд░рд╛рд░рдВрдн рдХреЗ рд▓рд┐рдП рдкреНрд░рдХрд╛рд░ SKScene рдХреА рдПрдХ рд╡рд╕реНрддреБ рд▓реМрдЯрд╛рддрд╛ рд╣реИред
рдХреГрдкрдпрд╛ рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рд╣рдорд╛рд░реЗ рджреГрд╢реНрдп рдХреА рд╡рд╕реНрддреБ рдореЗрдВ рдЧреБрдг рд╣реИрдВ:
scaleMode рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдирд╛рдо рд╕реЗ рдЕрдиреБрдорд╛рди рд▓рдЧрд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдпрд╣ рд╕рдВрдкрддреНрддрд┐ рд╕реНрдХреНрд░реАрди рдХреЗ рдкрд╛рд░ рджреГрд╢реНрдп рдЦреАрдВрдЪрддреА рд╣реИ , рдЗрд╕ рд╕рдВрдкрддреНрддрд┐ рдХреЗ рд╕рд╛рде рдкреНрд░рдпреЛрдЧ рдХрд░реЗрдВ!
рдЬрдм рд╣рдордиреЗ рдЕрдкрдиреЗ SKView рдХреЛ рдХрд╕реНрдЯрдорд╛рдЗрдЬрд╝ рдХрд┐рдпрд╛ рдФрд░ рдЕрдкрдиреЗ рджреГрд╢реНрдп рдХрд╛ рдПрдХ рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рдпрд╛, рддреЛ рдЕрдм рд╣рдо рдЗрд╕реЗ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣ рдмрд╣реБрдд рд╕рд░рд▓рддрд╛ рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд╣рдо SKView рд╡рд░реНрдЧ рдХреЗ рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдпрд╛ рд╡рд┐рдзрд┐ рдХреЛ рдХрд╣рддреЗ рд╣реИрдВ :
рдСрдмреНрдЬреЗрдХреНрдЯрд┐рд╡-рд╕реА
рддреАрд╡реНрд░
рдФрд░ рдлрд┐рд░ рд╣рдо рдПрдХ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдЕрдкрдиреЗ рджреГрд╢реНрдп рдХреЗ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рдкрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВ, рдЕрдм рд╣рдо рд╕рдВрдХрд▓рд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдФрд░ "рд╡реЙрдЗрд▓рд╛" рд╣рдорд╛рд░рд╛ рджреГрд╢реНрдп рддреИрдпрд╛рд░ рд╣реИ! |
рдиреАрдЪреЗ рдореИрдВрдиреЗ рдкреВрд░рд╛ GameViewController рдХреЛрдб рдкреНрд░рджрд╛рди рдХрд┐рдпрд╛ рд╣реИ ред
рдСрдмреНрдЬреЗрдХреНрдЯрд┐рд╡-рд╕реА
#import "GameViewController.h" #import "GameScene.h" @implementation SKScene (Unarchive) + (instancetype)unarchiveFromFile:(NSString *)file { /* Retrieve scene file path from the application bundle */ NSString *nodePath = [[NSBundle mainBundle] pathForResource:file ofType:@"sks"]; /* Unarchive the file to an SKScene object */ NSData *data = [NSData dataWithContentsOfFile:nodePath options:NSDataReadingMappedIfSafe error:nil]; NSKeyedUnarchiver *arch = [[NSKeyedUnarchiver alloc] initForReadingWithData:data]; [arch setClass:self forClassName:@"SKScene"]; SKScene *scene = [arch decodeObjectForKey:NSKeyedArchiveRootObjectKey]; [arch finishDecoding]; return scene; } @end @implementation GameViewController - (void)viewDidLoad { [super viewDidLoad]; // Configure the view. SKView * skView = (SKView *)self.view; // skView.showsFPS = YES; skView.showsNodeCount = YES; /* Sprite Kit applies additional optimizations to improve rendering performance */ skView.ignoresSiblingOrder = YES; // Create and configure the scene. GameScene *scene = [GameScene unarchiveFromFile:@"GameScene"]; scene.scaleMode = SKSceneScaleModeAspectFill; // Present the scene. [skView presentScene:scene]; } - (BOOL)shouldAutorotate { return YES; } - (NSUInteger)supportedInterfaceOrientations { if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone) { return UIInterfaceOrientationMaskAllButUpsideDown; } else { return UIInterfaceOrientationMaskAll; } } - (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; // Release any cached data, images, etc that aren't in use. } @end
рддреАрд╡реНрд░
import UIKit import SpriteKit extension SKNode { class func unarchiveFromFile(file : NSString) -> SKNode? { let path = NSBundle.mainBundle().pathForResource(file, ofType: "sks") var sceneData = NSData.dataWithContentsOfFile(path, options: .DataReadingMappedIfSafe, error: nil) var archiver = NSKeyedUnarchiver(forReadingWithData: sceneData) archiver.setClass(self.classForKeyedUnarchiver(), forClassName: "SKScene") let scene = archiver.decodeObjectForKey(NSKeyedArchiveRootObjectKey) as GameScene archiver.finishDecoding() return scene } } class GameViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() if let scene = GameScene.unarchiveFromFile("GameScene") as? GameScene { // Configure the view. let skView = self.view as SKView skView.showsFPS = true skView.showsNodeCount = true /* Sprite Kit applies additional optimizations to improve rendering performance */ skView.ignoresSiblingOrder = true /* Set the scale mode to scale to fit the window */ scene.scaleMode = .AspectFill skView.presentScene(scene) } } override func shouldAutorotate() -> Bool { return true } override func supportedInterfaceOrientations() -> Int { if UIDevice.currentDevice().userInterfaceIdiom == .Phone { return Int(UIInterfaceOrientationMask.AllButUpsideDown.toRaw()) } else { return Int(UIInterfaceOrientationMask.All.toRaw()) } } override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() // Release any cached data, images, etc that aren't in use. } }
GameScene
рдЦреИрд░, рдЬрдм рд╣рдо рдЕрдкрдирд╛ рджреГрд╢реНрдп рд╕реЗрдЯ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рд╢рддреНрд░реБрддрд╛ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдпрд╣рд╛рдВ рдореЗрд░реЗ рджреЛрд╕реНрдд рд╕рднреА рдордЬрд╝рд╛ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ!
рдЬреИрд╕рд╛ рдХрд┐ рдЖрдкрдиреЗ рдкрд╣рд▓реЗ рд╣реА рджреЗрдЦрд╛ рдерд╛, рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, рд╣рдо рдХреБрдЫ рдкрд╣рд▓реЗ рд╕реЗ рдЬреЛрдбрд╝реЗ рдЧрдП рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рд╕рд╛рде рдПрдХ рджреГрд╢реНрдп рд╢реБрд░реВ рдХрд░реЗрдВрдЧреЗред
GameScene рдореЗрдВ рд╕рдм рдХреБрдЫ рд╣рдЯрд╛рдПрдВ рддрд╛рдХрд┐ рдпрд╣ рдиреАрдЪреЗ рджрд┐рдП рдЧрдП рдХреЛрдб рд╕реЗ рдореЗрд▓ рдЦрд╛рдП:
рдСрдмреНрдЬреЗрдХреНрдЯрд┐рд╡-рд╕реА
#import "GameScene.h" @implementation GameScene -(void)didMoveToView:(SKView *)view { } @end
рддреАрд╡реНрд░
import SpriteKit class GameScene: SKScene { override func didMoveToView(view: SKView) { } }
рдЕрдм рд╣рдорд╛рд░реЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЛ рд╕рдВрдХрд▓рд┐рдд рдХрд░реЗрдВ рдФрд░ рд╣рдо рджреЗрдЦреЗрдВрдЧреЗ:
рд╣рдо рдПрдХ рд░рд┐рдХреНрдд рдЧреНрд░реЗ рд╕реНрдХреНрд░реАрди рджреЗрдЦрддреЗ рд╣реИрдВ рдФрд░ рдиреЛрдб рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдХреА рд╕рдВрдЦреНрдпрд╛ рдФрд░ рджреГрд╢реНрдп рдХреА рддрд╛рдЬрд╝рд╛ рджрд░ рд╕реЗ рдЕрдзрд┐рдХ рдХреБрдЫ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рдЕрдм рдЪрд▓рд┐рдП GameScene рдореЗрдВ рдХреЛрдб рдХреЛ рд░реЛрдХреЗрдВ рдФрд░ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░реЗрдВред
рдпрд╣ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рд╣рдорд╛рд░рд╛ рджреГрд╢реНрдп рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рд╣рдореЗрдВ рдкрд╣рд▓реЗ рдЗрд╕рдХреЗ рдореБрдЦреНрдп рддрд░реАрдХреЛрдВ рдпрд╛ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рд╕рдордЭрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдиреАрдЪреЗ рдореИрдВ рдореБрдЦреНрдп рдмрд╛рддреЗрдВ рджреВрдВрдЧрд╛, рдЖрдк рдмрд╛рдХреА рдХреЛ рдЦреБрдж рдХреЛ .h рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВред
рдореБрдЦреНрдп рдЧреБрдг:
1) рдЖрдХрд╛рд░ - рд╣рдорд╛рд░реЗ рджреГрд╢реНрдп рдХрд╛ рдЖрдХрд╛рд░ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддрд╛ рд╣реИред
2) рдкреИрдорд╛рдирд╛ - рд╣рдорд╛рд░реЗ рджреГрд╢реНрдп рдХреЗ рдкреНрд░рджрд░реНрд╢рди рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддрд╛ рд╣реИред 3) рдмреИрдХрдЧреНрд░рд╛рдЙрдВрдбрд░реЛрд▓ - рд╣рдорд╛рд░реЗ рджреГрд╢реНрдп рдХреЗ рд░рдВрдЧ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддрд╛ рд╣реИ, рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдЧреНрд░реЗ (рдЬреИрд╕рд╛ рдХрд┐ рд╣рдо рдКрдкрд░ рдиреЛрдЯрд┐рд╕ рдХрд░рдиреЗ рдореЗрдВ рдХрд╛рдордпрд╛рдм рд░рд╣реЗ)ред 4) рдПрдВрдХрд░рдкреЙрдЗрдВрдЯ - рд╣рдорд╛рд░реЗ рджреГрд╢реНрдп рдХреЗ рд╢реБрд░реБрдЖрддреА рдмрд┐рдВрджреБ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддрд╛ рд╣реИред 5) рджреГрд╢реНрдп - рд╣рдорд╛рд░рд╛ рдореВрд▓ рджреГрд╢реНрдпред 6) рднреМрддрд┐рдХреАрд╡рд░реНрд▓реНрдб - рдпрд╣ рдПрдХ рдмрд╣реБрдд рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╕рдВрдкрддреНрддрд┐ рд╣реИ рдЬреЛ рджреГрд╢реНрдп (рдЧреБрд░реБрддреНрд╡рд╛рдХрд░реНрд╖рдг, рдЧрддрд┐) рдХреЗ рднреМрддрд┐рдХреА рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реИ, рд╣рдо рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдж рдореЗрдВ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рдмрд╛рдд рдХрд░реЗрдВрдЧреЗред |
рдмреБрдирд┐рдпрд╛рджреА рддрд░реАрдХреЗ рдпрд╛ рдХрд╛рд░реНрдп
1) didMoveToView: - рд╣рдорд╛рд░реЗ рджреГрд╢реНрдп рдкреНрд░рджрд░реНрд╢рд┐рдд рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж рдХреЙрд▓ рдХрд┐рдпрд╛ рдЧрдпрд╛ред
2) willMoveFromView: - рд╣рдорд╛рд░реЗ рджреГрд╢реНрдп рдХреЛ рд╣рдЯрд╛рдП рдЬрд╛рдиреЗ рдХреЗ рдмрд╛рдж рдХреЙрд▓ рдХрд┐рдпрд╛ рдЧрдпрд╛ред 3) didChangeSize: - рд╣рдорд╛рд░реЗ рджреГрд╢реНрдп рдХрд╛ рдЖрдХрд╛рд░ рдмрджрд▓рдиреЗ рдкрд░ рдХреЙрд▓ рдХрд┐рдпрд╛ рдЧрдпрд╛ред 4) ConvertPointToView: - рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╛рд░реНрдп рдХрд░рддрд╛ рд╣реИ 5) ConvertPointFromView: - рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╛рд░реНрдп рдХрд░рддрд╛ рд╣реИ 6) initWithSize: - рдЬрдм рд╣рдорд╛рд░реЗ рд╕реАрди рдХреЛ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рддреЛ рдХреЙрд▓ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред |
рд╣рдорд╛рд░реЗ рджреГрд╢реНрдп рдХреА рдореБрдЦреНрдп рдШрдЯрдирд╛рдПрдВ
рд╣рдорд╛рд░реЗ рдЦреЗрд▓ рдХреЗ рдореВрд▓ рддрд░реНрдХ рдХреЛ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдШрдЯрдирд╛рдУрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдЙрдиреНрд╣реЗрдВ рдЙрд╕реА рдХреНрд░рдо рдореЗрдВ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрд┐рд╕ рдХреНрд░рдо рдореЗрдВ рдореИрдВрдиреЗ рд▓рд┐рдЦрд╛ рдерд╛!
1) рдЕрджреНрдпрддрди: - рдпрд╣рд╛рдБ рд╣рдорд╛рд░реЗ рдЦреЗрд▓ рдХрд╛ рдореВрд▓ рддрд░реНрдХ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред 2) didEvaluateActions - рд╣рдорд╛рд░реЗ рдХрд╛рд░реНрдп - рдХрд╛рд░реНрдпреЛрдВ рдХреА рдЧрдгрдирд╛ рдХреЗ рд▓рд┐рдП рдХрд╛рд░реНрдп рдХрд░рддрд╛ рд╣реИред 3) didSimulatePhysics - рд╢рд╛рд░реАрд░рд┐рдХ рдШрдЯрдирд╛рдУрдВ рдХреА рдЧрдгрдирд╛ рдХреЗ рд▓рд┐рдП рдХрд╛рд░реНрдп рдХрд░рддрд╛ рд╣реИред 4) didApplyConstriants - рдкреНрд░рддрд┐рдмрдВрдзреЛрдВ рдХреА рдЧрдгрдирд╛ рдХреЗ рд▓рд┐рдП рдХрд╛рд░реНрдп рдХрд░рддрд╛ рд╣реИред 5) didFinishUpdate - рдЙрдкрд░реЛрдХреНрдд рд╕рднреА рдШрдЯрдирд╛рдУрдВ рдХреЗ рдкреВрд░рд╛ рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж рдХреЙрд▓ рдХрд┐рдпрд╛ рдЧрдпрд╛ред |
рддреЛ, рджреЛрд╕реНрддреЛрдВ, рдЕрдм рдЬрдм рд╣рдордиреЗ рдЕрдкрдиреЗ рджреГрд╢реНрдп рдХреЗ рдореВрд▓ рддрд░реАрдХреЛрдВ рдпрд╛ рдХрд╛рд░реНрдпреЛрдВ, рдЧреБрдгреЛрдВ рдФрд░ рдШрдЯрдирд╛рдУрдВ рдХреЛ рджреЗрдЦрд╛ рд╣реИ, рддреЛ рд╣рдо рдЕрдкрдиреЗ рдХреЛрдб рдХреЛ рдереЛрдбрд╝рд╛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЖрдЗрдП рд╣рдорд╛рд░реЗ рджреГрд╢реНрдп рдХреЗ рд░рдВрдЧ рдХреЛ рдмрджрд▓рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдВ, рдЗрд╕рдХреЗ рд▓рд┐рдП, рдкреГрд╖реНрдарднреВрдорд┐ рдХреЗ рд░рдВрдЧ рдХреА рд╕рдВрдкрддреНрддрд┐ рдХреА рдУрд░ рдореБрдбрд╝реЗрдВ рдФрд░ рдирд╛рд░рдВрдЧреА рдореЗрдВ рд╣рдорд╛рд░реЗ рджреГрд╢реНрдп рдХреЛ рдЪрд┐рддреНрд░рд┐рдд рдХрд░реЗрдВред рдЬреИрд╕рд╛ рдХрд┐ рд╣рдордиреЗ рдКрдкрд░ рджреЗрдЦрд╛, рдЬрдм рдПрдХ рджреГрд╢реНрдп рдХреЛ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝ рдХрд░рддреЗ рд╣реБрдП, initWithSize: рдореЗрдердб рдпрд╛ рдлрдВрдХреНрд╢рди рдХреЛ рдкрд╣рд▓реЗ рдмреБрд▓рд╛рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдФрд░ рд╣рдорд╛рд░реЗ рд╕реАрди рдХреЗ рдкреНрд░рджрд░реНрд╢рд┐рдд рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж, doMoveToView: рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ ред рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рджреГрд╢реНрдп рдХреЛ рд╡рд┐рдзрд┐ рдпрд╛ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдЕрдирд╛рд░реНрдХрд┐рд╡рдлреНрд░реЗрдорд╛рдЗрд▓ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдЗрд╕рд▓рд┐рдП рдЕрдм рд╣рдо рдЖрд░рдВрднреАрдХрд░рдг рд╡рд┐рдзрд┐ рдХреЛ рдлрд┐рд░ рд╕реЗ рдирд╣реАрдВ рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВред рдФрд░ рдЗрд╕рд▓рд┐рдП, рдпрд╣ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рд╣рдорд╛рд░реА рдкреНрд░рд╛рд░рдВрднрд┐рдХ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рдореЗрдВ рдмрдирд╛ рд░рд╣рддрд╛ рд╣реИ :
рдСрдмреНрдЬреЗрдХреНрдЯрд┐рд╡-рд╕реА
#import "GameScene.h" @implementation GameScene -(void)didMoveToView:(SKView *)view { [self SceneSetting]; // SceneSetting } -(void)SceneSetting { self.backgroundColor = [SKColor orangeColor]; // } @end
рддреАрд╡реНрд░
import SpriteKit class GameScene: SKScene { override func didMoveToView(view: SKView) { SceneSetting() // SceneSetting } func SceneSetting() { self.backgroundColor = SKColor.orangeColor() // } }
рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдКрдкрд░ рджрд┐рдП рдЧрдП рдЙрджрд╛рд╣рд░рдгреЛрдВ рд╕реЗ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, doMoveToView рдореЗрдердб рдпрд╛ рдлрдВрдХреНрд╢рди рдХреЛ рдкрд╣рд▓реЗ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдлрд┐рд░ рдЗрд╕рдореЗрдВ SceneSetting рдореЗрдердб рдпрд╛ рдлрдВрдХреНрд╢рди рдХреЛ (рдЗрд╕реЗ) рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдЙрд╕рдХреЗ рдмрд╛рдж рд╣рдорд╛рд░реЗ рд╕реАрди рдХрд╛ рд░рдВрдЧ рдмрджрд▓ рдЬрд╛рддрд╛ рд╣реИред рдХреГрдкрдпрд╛ рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдЬрдм рд░рдВрдЧ рдмрджрд▓рддрд╛ рд╣реИ, рддреЛ рд╣рдо UIColor рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ рдЬреИрд╕рд╛ рдХрд┐ рд╣рдо рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рд╣рдо SKColor рдХреА рдУрд░ рдореБрдбрд╝рддреЗ рд╣реИрдВ , рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ рдпрд╣ UIColor рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЗрд╕рд▓рд┐рдП рдЖрдк рдЗрд╕ рддрд░рд╣ рд╕реЗ рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдпрд╣ рдПрдХ рддреНрд░реБрдЯрд┐ рдирд╣реАрдВ рд╣реЛрдЧреАред рдЖрдк рд╢рд╛рдпрдж рдкреВрдЫрддреЗ рд╣реИрдВ рдХрд┐ рдореИрдВрдиреЗ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЛ рдПрдХ рдЕрд▓рдЧ рд╡рд┐рдзрд┐ рдпрд╛ рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рдХреНрдпреЛрдВ рдмрдирд╛рдпрд╛ред рдореИрдВрдиреЗ рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рд▓рд┐рдП рдРрд╕рд╛ рдХрд┐рдпрд╛, рдмрдбрд╝реА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ рдХрднреА-рдХрднреА рдиреЗрд╡рд┐рдЧреЗрдЯ рдХрд░рдирд╛ рдмрд╣реБрдд рдореБрд╢реНрдХрд┐рд▓ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдФрд░ рдпрд╣ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдмрд╣реБрдд рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реЛрдЧрд╛ рдпрджрд┐ рд╣рдо рд╢реБрд░реБрдЖрдд рдореЗрдВ рдмрд╣реБрдд рд╕рд╛рд╡рдзрд╛рдиреА рд╕реЗ рд╕рдм рдХреБрдЫ рдХрд░рддреЗ рд╣реИрдВред
рддреЛ, рд╣рдо рдЖрдкрдХреЛ рдиреАрдЪреЗ рджреА рдЧрдИ рдЫрд╡рд┐ рдореЗрдВ рдХреНрдпрд╛ рджреЗрдЦрддреЗ рд╣реИрдВред
рд╣рдорд╛рд░реЗ рдордВрдЪ рдкрд░, рдХреБрдЫ рднреА рдирд╣реАрдВ рд╣реЛ рд░рд╣рд╛ рд╣реИ, рддреЛ рдЪрд▓реЛ рдЗрд╕реЗ рдареАрдХ рдХрд░реЗрдВ рджреЛрд╕реНрддреЛрдВ!
рдирд╣реАрдВ рддреЛ рд╣рдо рдпрд╣рд╛рдВ рдХреНрдпрд╛ рдХрд░ рд░рд╣реЗ рд╣реИрдВ!
SKNode
рдареАрдХ рд╣реИ, рджреЛрд╕реНрддреЛрдВ, рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рд╣рдордиреЗ рдЕрдкрдиреЗ рджреГрд╢реНрдп рдХрд╛ рд░рдВрдЧ рдмрджрд▓ рджрд┐рдпрд╛ рдФрд░ рдЖрдкрдХреЛ рд╢рд╛рдпрдж рдЖрд╢реНрдЪрд░реНрдп рд╣реБрдЖ рдХрд┐ рдХреНрдпрд╛ рдпрд╣ рд╕рдм рд╣реИ? рдФрд░ рдЗрд╕рдХреЗ рд▓рд┐рдП рд╣рдо рдпрд╣рд╛рдБ рдЧрдП рдереЗ?
рджреЛрд╕реНрддреЛрдВ, рджреБрд░реНрднрд╛рдЧреНрдпрд╡рд╢ рдореИрдВ рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рд╣рдорд╛рд░реЗ рджреГрд╢реНрдп рдХреА рдкреВрд░реА рд╢рдХреНрддрд┐ рдХрд╛ рдкреНрд░рджрд░реНрд╢рди рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛, рдЗрд╕рдХреЗ рд▓рд┐рдП рд╣рдореЗрдВ рдПрдХ рдФрд░ рдмрд╣реБрдд рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд┐рдВрджреБ - рдПрд╕рдХреЗрдХреЛрдб рдХрд╛ рдЕрдзреНрдпрдпрди рдХрд░рдирд╛ рд╣реЛрдЧрд╛ ред
SKNode рдПрдХ рдЖрд╡рд╢реНрдпрдХ рддрддреНрд╡ рд╣реИред рд╕реНрдкреНрд░рд╛рдЗрдЯрдХрд┐рдЯ рдореЗрдВ, рдЗрд╕реЗ рдореБрдЦреНрдп рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЕрдиреНрдп рд╕рднреА рддрддреНрд╡ рдЗрд╕рд╕реЗ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдорд┐рд▓реЗ рд╣реИрдВред
рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рд╣рдорд╛рд░рд╛ рджреГрд╢реНрдп рдореВрд▓ рд░реВрдк рд╕реЗ рдЗрд╕рдХрд╛ рдЙрддреНрддрд░рд╛рдзрд┐рдХрд╛рд░реА рд╣реИ рдФрд░ рдЗрд╕рдХреЗ рд╕рднреА рдЧреБрдг рд╣реИрдВред
рдЖрдЗрдП рд╣рдорд╛рд░реЗ SKNode рдХреА рд╕рдВрдкрддреНрддрд┐, рд╡рд┐рдзрд┐рдпреЛрдВ рдпрд╛ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рджреЗрдЦреЗрдВ ред
рд╕рдВрдкрддреНрддрд┐
1) рдлреНрд░реЗрдо - рд╣рдорд╛рд░реЗ рдиреЛрдб рдХреЗ рдЖрдХрд╛рд░ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддрд╛ рд╣реИред
2) рд╕реНрдерд┐рддрд┐ - рд╣рдорд╛рд░реЗ рдиреЛрдб рдХреА рд╕реНрдерд┐рддрд┐ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддрд╛ рд╣реИред 3) zPosition - рдЬреЗрдб рдЕрдХреНрд╖ рдХреЗ рд╕рд╛рдкреЗрдХреНрд╖ рд╣рдорд╛рд░реЗ рдиреЛрдб рдХреА рд╕реНрдерд┐рддрд┐ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддрд╛ рд╣реИред 4) zRotation - рдпреВрд▓рд░ рдХреЛрдиреЛрдВ рдореЗрдВ рд╣рдорд╛рд░реЗ рдиреЛрдб рдХреЗ рд░реЛрдЯреЗрд╢рди рдХреЛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддрд╛ рд╣реИред 5) xScale - x рдЕрдХреНрд╖ рдХреЗ рд╕рд╛рде рд╣рдорд╛рд░реЗ рдиреЛрдб рдХрд╛ рдкреИрдорд╛рдирд╛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддрд╛ рд╣реИред 6) yScale - y рдЕрдХреНрд╖ рдХреЗ рд╕рд╛рде рд╣рдорд╛рд░реЗ рдиреЛрдб рдХрд╛ рдкреИрдорд╛рдирд╛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддрд╛ рд╣реИред 7) рдЧрддрд┐ - рд╣рдорд╛рд░реЗ рдиреЛрдб рдХреА рдЧрддрд┐ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддрд╛ рд╣реИред 8) рдЕрд▓реНрдлрд╛ - рд╣рдорд╛рд░реЗ рдиреЛрдб рдХреЗ рдЕрд▓реНрдлрд╛ рдШрдЯрдХ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддрд╛ рд╣реИред 9) рд░реБрдХрд╛ рд╣реБрдЖ - рдпрджрд┐ рд╣рдорд╛рд░рд╛ рдиреЛрдб рдХреНрд░рд┐рдпрд╛ - рдХрд╛рд░реНрдп рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рддреЛ рд╣рд╛рдБред 10) рдЫрд┐рдкрд╛ рд╣реБрдЖ - рдпрджрд┐ рд╣рдорд╛рд░рд╛ рдиреЛрдб рдЫрд┐рдкрд╛ рд╣реБрдЖ рд╣реИ, рддреЛ рд╣рд╛рдБред резрез) рдпреВрд╕рд░рдЗрдВрдЯрд░рдПрдХреНрд╢рди рдЗрдиреЗрдмрд▓реНрдб - рдпрджрд┐ рд╣рдорд╛рд░рд╛ рдиреЛрдб рдПрдХ рдЯрдЪ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддрд╛ рд╣реИ, рддреЛ рд╣рд╛рдБред 12) рдЕрднрд┐рднрд╛рд╡рдХ - рдореВрд▓ рдиреЛрдб рд▓реМрдЯрд╛рддрд╛ рд╣реИ (рдпрджрд┐ рд░рд┐рдЯрд░реНрди рд╢реВрдиреНрдп рд╣реИ, рддреЛ рдпрд╣ рд╕реНрд╡рдпрдВ рдореВрд▓ рдиреЛрдб рд╣реИ) 13) рдмрдЪреНрдЪреЗ - рд╣рдорд╛рд░реЗ рдиреЛрдб рдХреЗ рд╕рднреА рд╡рдВрд╢рдЬ рд▓реМрдЯрддреЗ рд╣реИрдВред 14) рдирд╛рдо - рд╣рдорд╛рд░реЗ рдиреЛрдб рдХреЗ рдирд╛рдо рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддрд╛ рд╣реИред (рдмрд╣реБрдд рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╕рдВрдкрддреНрддрд┐) 15) рджреГрд╢реНрдп - рд╡рд╣ рджреГрд╢реНрдп рдЬрд┐рд╕ рдкрд░ рд╣рдорд╛рд░рд╛ рдиреЛрдб рд╡рд░реНрддрдорд╛рди рдореЗрдВ рд╕реНрдерд┐рдд рд╣реИред 16) рдлрд┐рдЬрд┐рдХреНрд╕ рдмреЙрдбреА - рдж рдлрд┐рдЬрд┐рдХрд▓ рдмреЙрдбреА рдСрдл рдЖрд╡рд░ рдиреЛрдбред (рдПрдХ рдмрд╣реБрдд рд╣реА рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╕рдВрдкрддреНрддрд┐ рдЬрд┐рд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣рдо рдмрд╛рдж рдореЗрдВ рдЬрд╛рдиреЗрдВрдЧреЗ) 17) рдпреВрдЬрд░рдбреЗрдЯрд╛ - рдЙрд╕ рд╕реНрдерд╛рди рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддрд╛ рд╣реИ рдЬрд╣рд╛рдБ рдЖрдк рд╣рдорд╛рд░реЗ рдиреЛрдб рдХреЛ рдЙрдкрдпреЛрдЧреА рдЬрд╛рдирдХрд╛рд░реА рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВред 18) рддрдХ рдкрд╣реБрдВрдЪрдирд╛ - рдЗрдВрджреНрд░рдХреБрдорд╛рд░ (рдЙрд▓рдЯрд╛ рдХрд┐рдиреЗрдореИрдЯрд┐рдХреНрд╕) рдореЗрдВ рд╕реНрд╡рддрдВрддреНрд░рддрд╛ рдХреА рдбрд┐рдЧреНрд░реА рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддрд╛ рд╣реИ - рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХреНрд░рд┐рдпрд╛ред 19) рдмрд╛рдзрд╛рдПрдВ - рдмрд╛рдзрд╛рдУрдВ рдХреА рдПрдХ рд╕реВрдЪреА рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддрд╛ рд╣реИред |
рддрд░реАрдХреЗ рдпрд╛ рдХрд╛рд░реНрдп
1) рд╕реЗрдЯрд╕реНрдХреЗрд▓ - рд╕реНрдХреЗрд▓ рд╕реЗрдЯ рдХрд░реЗрдВ ( рд╕рдорд╛рди рд░реВрдк рд╕реЗ рдПрдХреНрд╕рдПрдВрдбрд╡рд╛рдИ рдХреЗ рд╕рд╛рде)
2) AddChild - рдПрдХ рд╡рдВрд╢рдЬ рдЬреЛрдбрд╝реЗрдВред (рдПрдХ рдиреЛрдб рдХреЛ рджреВрд╕рд░реЗ рдореЗрдВ рдЬреЛрдбрд╝реЗрдВ) 3) рд╕рдореНрдорд┐рд▓рд┐рдд рдХрд░реЗрдВ - рдмрдЪреНрдЪреЗ рдХреЛ рдирд┐рдХрд╛рд▓реЗрдВ ред 4) removeChildrenInArray - рд╕реВрдЪреА рд╕реЗ рд╡рдВрд╢рдЬ рдирд┐рдХрд╛рд▓реЗрдВред 5) RemoveAllChildren - рд╕рднреА рд╡рдВрд╢рдЬ рдирд┐рдХрд╛рд▓реЗрдВред 6) removeFromParent - рдореВрд▓ рдиреЛрдб рдирд┐рдХрд╛рд▓реЗрдВред 7) childNodeWithName - рдирд╛рдо рд╕реЗ рдмрдЪреНрдЪреЗ рдХреЛ рд▓реМрдЯрд╛рддрд╛ рд╣реИред 8) enumerateChildNodesWithName - рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдирд╛рдо рд╕реЗ рд╕рднреА рд╡рдВрд╢реЛрдВ рдХреЛ рдлрд┐рд░ рд╕реЗ рд╕рдВрдЧрдард┐рдд рдХрд░реЗрдВред 9) рдЗрдирд╣реЗрд░реЗрдВрдЯрд╣реЗрдпрд░рд╛рд░реНрдХреА - рдпрджрд┐ рд╣рдорд╛рд░рд╛ рдиреЛрдб рдкрджрд╛рдиреБрдХреНрд░рдо рдХрд╛ рд╕рджрд╕реНрдп рд╣реИ, рддреЛ рд╣рд╛рдБ 10) рд░рдирдПрдХреНрд╢рди - рдПрдХреНрд╢рди рдЪрд▓рд╛рдПрдВред 11) рд░рдирдПрдХреНрд╢рди - рдкреВрд░рд╛ рдХрд░рдирд╛ - рдПрдХреНрд╢рди - рдПрдХреНрд╢рди рдХреЛ рдПрдХреНрд╕реЗрдкреНрдЯ рдХрд░рдирд╛ ; рдкреВрд░рд╛ рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж, рдЗрд╕реЗ рдХрдВрдкреНрд▓реАрд╢рди рдмреНрд▓реЙрдХ рдХрд╣рддреЗ рд╣реИрдВред 12) runAction - withKey - рдПрдХ рдХреНрд░рд┐рдпрд╛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░реЗрдВ - рджрд┐рдП рдЧрдП рдХреБрдВрдЬреА рдХреЗ рд╕рд╛рде рдПрдХ рдХреНрд░рд┐рдпрд╛ред 13) рд╣реИрд╢рди - рд░рд┐рдЯрд░реНрди рдпрджрд┐ рд╣рдорд╛рд░рд╛ рдиреЛрдб рдПрдХ рдХреНрд░рд┐рдпрд╛ - рдХреНрд░рд┐рдпрд╛ рдХрд░рддрд╛ рд╣реИ, рддреЛ рд╣рд╛рдБ 14) рдПрдХреНрд╢рдирдлреЙрд░рдХреЗ - рд░рд┐рдЯрд░реНрди рдПрдХреНрд╢рди - рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХреБрдВрдЬреА рдХреЗ рд╕рд╛рде рдПрдХреНрд╢рдиред 15) removeActionForKey - рдХрд╛рд░реНрд░рд╡рд╛рдИ рдирд┐рдХрд╛рд▓реЗрдВ - рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХреБрдВрдЬреА рдХреЗ рд╕рд╛рде рдХрд╛рд░реНрд░рд╡рд╛рдИред 16) RemoveAllActions - рд╕рднреА рдХрд╛рд░реНрд░рд╡рд╛рдИ рдирд┐рдХрд╛рд▓реЗрдВ - рд╣рдорд╛рд░реЗ рдиреЛрдб рдХреА рдХрд╛рд░реНрд░рд╡рд╛рдИред 17) рд╕рдореНтАНрдорд┐рд▓рд┐рдд рд╕рдореНтАНрдорд┐рд▓рд┐рдд рд╣реИ - рдпрджрд┐ рд╣рдорд╛рд░реА рдмрд╛рдд рд╣рдорд╛рд░реЗ рдиреЛрдб / рдХреЗ рдЕрдВрджрд░ рдирд┐рд╣рд┐рдд рд╣реИ рддреЛ рд╣рд╛рдВ 18) рдиреЛрдбрдПрдЯрдкреЙрдк - рдЗрд╕ рдмрд┐рдВрджреБ рдкрд░ рд╕реНрдерд┐рдд SKNode рдХреЗ рдкреНрд░рдХрд╛рд░ рдХреА рдПрдХ рд╡рд╕реНрддреБ рд▓реМрдЯрд╛рддрд╛ рд╣реИред 19) nodesAtPoint - рдЗрд╕ рдмрд┐рдВрджреБ рдкрд░ рд╕реНрдерд┐рдд SKNode рдХреЗ рдкреНрд░рдХрд╛рд░ рдХреА рд╡рд╕реНрддреБрдУрдВ рдХреА рд╕реВрдЪреА рд▓реМрдЯрд╛рддрд╛ рд╣реИред 20) рд░реВрдкрд╛рдВрддрд░ - fromNode - рдзрд░реНрдорд╛рдиреНрддрд░рд┐рдд рдФрд░ рд░рд┐рдЯрд░реНрди рд╣рдорд╛рд░реЗ рд╕рдордиреНрд╡рдп рдкреНрд░рдгрд╛рд▓реА рдХреЗ рд▓рд┐рдП рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХред 21) рдХрдирд╡рд░реНрдЬрд╝рди - рдПрдирдХреЛрдб - рдзрд░реНрдорд╛рдиреНрддрд░рд┐рдд рдФрд░ рд░рд┐рдЯрд░реНрди рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рд╣рдорд╛рд░реЗ рд╕рдордиреНрд╡рдп рдкреНрд░рдгрд╛рд▓реА рдХреЗ рд▓рд┐рдП рдирд╣реАрдВред 22) рдЪреМрд░рд╛рд╣реЗ рдкрд░ рд╕реНрдерд┐рдд - рдпрджрд┐ рд╣рдорд╛рд░рд╛ рдиреЛрдб рджреВрд╕рд░реЗ рдиреЛрдб рдХреА рд╕реАрдорд╛ рдХреЛ рдХрд╛рдЯрддрд╛ рд╣реИ, рддреЛ рд╣рд╛рдБ реирей) рдЧрдгрдирд╛рдЕрдиреБрд╕реВрдЪрд┐рддрдлреНрд░реЗрдо - рд╕реАрдорд╛рдУрдВ рдХреЗ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рд▓реМрдЯрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рд╡рдВрд╢рдЬ рднреА рд╢рд╛рдорд┐рд▓ рд╣реИрдВред 24) locationInNode - рд╣рдорд╛рд░реЗ рджреНрд╡рд╛рд░рд╛ рдЫреЛрдбрд╝реЗ рдЧрдП рдиреЛрдб рдХреЗ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рд▓реМрдЯрд╛рддрд╛ рд╣реИред 25) рдкрд┐рдЫрд▓рд╛рд╕реНрдерд╛рдирдиреНрдпреВрдХреЛрдб - рдЙрд╕ рдиреЛрдб рдХреЗ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдХреЛ рд▓реМрдЯрд╛рддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рд╣рдордиреЗ рдкрд╣рд▓реЗ рдЫреБрдЖ рдерд╛ред |
рддреЛ рд╣рдо рд▓рдЧрднрдЧ рдкреВрд░реА рд╣реЛ рдЪреБрдХреА рд╣реИрдВ, рджреЛрд╕реНрддреЛрдВ рд╣рдорд╛рд░реЗ рд╕рд╛рде рдХреБрдЫ рдФрд░ рд╣реИред рдЬреИрд╕рд╛ рдХрд┐ рд╣рдо рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдереЛрдбрд╝рд╛ рдЕрдзрд┐рдХ рд╣реИ, SKNode рдЕрдкрдиреА рд╕рдВрд░рдЪрдирд╛ рдореЗрдВ рдЗрддрдирд╛ рдЬрдЯрд┐рд▓ рдирд╣реАрдВ рд╣реИ!
рд╡реИрд╕реЗ рднреА, SpriteKit рдЕрдкрдиреЗ рдЖрдк рдореЗрдВ рдЬрдЯрд┐рд▓ рдирд╣реАрдВ рд╣реИ, рдЖрдкрдХреЛ рдмрд╕ рдереЛрдбрд╝рд╛ рдзреИрд░реНрдп рд░рдЦрдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИ рдФрд░ рд╡рд╣ рдпрд╣ рд╣реИ!
рдЪрд▓рд┐рдП рдЬрд╛рд░реА рд░рдЦрддреЗ рд╣реИрдВ, рдХрдИ рдореВрд▓ рд╡рд╕реНрддреБрдПрдБ SKNode рд╕реЗ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдорд┐рд▓реА рд╣реИрдВ, рдЖрдЗрдП рдЙрди рдкрд░ рдПрдХ рдирдЬрд╝рд░ рдбрд╛рд▓рддреЗ рд╣реИрдВ:
1) SKSpriteNode - рдпрд╣ рдПрдХ рдорд╛рдирдХ рд╕реНрдкреНрд░рд╛рдЗрдЯ рд╣реИред
2) SKShapeNode - рдпрд╣ рдПрдХ рд╕рдордЧреНрд░ рд╕реНрдкреНрд░рд╛рдЗрдЯ рд╣реИ - рдПрдХ рд╡рд╕реНрддреБ рдЬреЛ рд▓рдЧрднрдЧ рдХрд┐рд╕реА рднреА рд░реВрдк рд▓реЗ рд╕рдХрддреА рд╣реИред
3) SKFieldNode - рдпреЗ рдЕрдиреНрдп рдирд┐рдХрд╛рдпреЛрдВ рдкрд░ рднреМрддрд┐рдХ рдмрд▓реЛрдВ рдХреЗ рдкреНрд░рднрд╛рд╡ рд╡рд╛рд▓реЗ рдХреНрд╖реЗрддреНрд░ рд╣реИрдВред
4) SKEmitterNode - рдпрд╣ рдПрдХ рд╡рд┐рд╢реЗрд╖ рдиреЛрдб (рдХрдг) рд╣реИ, рдпреЗ рд╡рд┐рд╢реЗрд╖ рдХрдг рд╣реИрдВ рдЬрд┐рдирд╕реЗ рдЖрдк рд╢рд╛рдВрдд рдкреНрд░рднрд╛рд╡ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВред
5) SKLabelNode - рдпрд╣ рдПрдХ рдиреЛрдб рд╣реИ рдЬреЛ рд╡рд┐рднрд┐рдиреНрди рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреЗ рд╕рд╛рде рдкрд╛рда рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИред
6) SKEffectNode - рдпрд╣ рдПрдХ рдиреЛрдб рд╣реИ рдЬреЛ рдЕрдкрдиреЗ рд╡рдВрд╢рдЬреЛрдВ рдкрд░ рд╡рд┐рд╢реЗрд╖ рдкреНрд░рднрд╛рд╡ рдбрд╛рд▓рддрд╛ рд╣реИред
7) SKLightNode - рдпрд╣ рдиреЛрдб рд╣реИ, рд╣рдорд╛рд░реЗ рджреГрд╢реНрдп рдореЗрдВ рдкреНрд░рдХрд╛рд╢ рдФрд░ рдЫрд╛рдпрд╛ рдЬреЛрдбрд╝рддрд╛ рд╣реИ, iOS 8 рдХреА рд░рд┐рд▓реАрдЬ рдХреЗ рд╕рд╛рде рджрд┐рдЦрд╛рдИ рджрд┐рдпрд╛ред
8) SKVideoNode - рдпрд╣ рдПрдХ рдиреЛрдб рд╣реИ рдЬреЛ рдЖрдкрдХреЛ рд╣рдорд╛рд░реЗ рджреГрд╢реНрдп рдореЗрдВ рд╡реАрдбрд┐рдпреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред
9) SKCropNode - рдпрд╣ рдПрдХ рдиреЛрдб рд╣реИ рдЬреЛ рдЖрдкрдХреЛ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдЖрдХрд╛рд░ рдХреА рд╡рд╕реНрддреБ рдХреА рдмрдирд╛рд╡рдЯ рдХреЛ рдмрджрд▓рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред
10) SK3DNode - рдЬреИрд╕рд╛ рдХрд┐ рдирд╛рдо рд╕реЗ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ , рдпрд╣ рдПрдХ рдиреЛрдб рд╣реИ рдЬреЛ рдЖрдкрдХреЛ 3 рдбреА рдСрдмреНрдЬреЗрдХреНрдЯ рдЬреЛрдбрд╝рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред
рдЙрдкрд░реЛрдХреНрдд рд╕рднреА рддрддреНрд╡ рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рдЙрдкрдпреЛрдЧ рдХреА рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рд╡рд╕реНрддреБрдПрдВ рд╣реИрдВ, рд╡реЗ рд╕реНрдкреНрд░рд╛рдЗрдЯрд┐рдЯ рдкрд░ рдЧреЗрдо рдмрдирд╛рдиреЗ рдХреЗ рдЖрдзрд╛рд░ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВред
рд╕рдордп рдЖ рдЧрдпрд╛ рд╣реИ рдЬрдм рд╣рдо рдЕрдкрдиреЗ рдиреЛрдб рдХреЛ рд▓рд╛рдЗрд╡ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВред рдореИрдВрдиреЗ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдЗрд╕ рд▓реЗрдЦ рдХреЛ рдереЛрдбрд╝реА рд╕реИрджреНрдзрд╛рдВрддрд┐рдХ рд╕рд╛рдордЧреНрд░реА рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рдХрд┐рдпрд╛ рд╣реИ, рддрд╛рдХрд┐ рдЖрдкрдХреЛ рдЗрдВрдЬрди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдФрд░ рдЗрд╕рдХреА рд╡рд┐рд╢рд╛рд▓ рдХреНрд╖рдорддрд╛рдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдереЛрдбрд╝рд╛ рд╡рд┐рдЪрд╛рд░ рд╣реЛред рдЕрдм рдЖрдЗрдП рдЙрдирдореЗрдВ рд╕реЗ рдХреБрдЫ рдХреЗ рдЙрджрд╛рд╣рд░рдг рджреЗрдЦреЗрдВ, рдЪрд▓реЛ рдХреНрд░рдо рдореЗрдВ рдЪрд▓рддреЗ рд╣реИрдВ рдФрд░ SKSpriteNode рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВред
рджреГрд╢реНрдп рдиреЛрдб рд╕рдореАрдХреНрд╖рд╛
рд╕рдореАрдХреНрд╖рд╛ рд╢реБрд░реВ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рд╣рдо рдЕрднрд┐рд╡рд┐рдиреНрдпрд╛рд╕ рдХреЛ рдЕрд╡рд░реБрджреНрдз рдХрд░ рджреЗрдВрдЧреЗ рдФрд░ рд╣рдорд╛рд░реЗ рджреГрд╢реНрдп рдкреИрдорд╛рдиреЗ рдХреА рд╕рдВрдкрддреНрддрд┐ рдХреЛ рдмрджрд▓ рджреЗрдВрдЧреЗ , рдпрд╣ рдХрд┐рд╕ рд▓рд┐рдП рд╣реИ?
рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рд▓рд┐рдП, рдореЗрд░реЗ рд▓рд┐рдП рдпрд╣ рдмрд╣реБрдд рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реЛрдЧрд╛ рдХрд┐ рдореИрдВ рдЖрдкрдХреЛ рдПрдХ рдЙрд▓реНрдЯреЗ рд╕реНрдХреНрд░реАрди рдкрд░ рдкреВрд░реА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рджрд┐рдЦрд╛рдКрдВ, рдФрд░ рдЖрдк рд╕реНрдХреНрд░реАрди рдХреЛ рдЕрдВрддрд╣реАрди рд░реВрдк рд╕реЗ рдмрджрд▓рдиреЗ рд╕реЗ рдердХ рдЧрдП рд╣реЛрдВрдЧреЗред
рдЖрдЗрдП рд╣рдорд╛рд░реЗ ViewController рдХреЛ рдвреВрдВрдвреЗрдВ рдФрд░ рдЗрд╕рдореЗрдВ рдЗрди рдЧреБрдгреЛрдВ рдХреЛ рдмрджрд▓реЗрдВред
рдСрдмреНрдЬреЗрдХреНрдЯрд┐рд╡-рд╕реА
scene.scaleMode = SKSceneScaleModeResizeFill;
- (NSUInteger)supportedInterfaceOrientations { return UIInterfaceOrientationMaskLandscape; }
рддреАрд╡реНрд░
scene.scaleMode = .ResizeFill
override func supportedInterfaceOrientations() -> Int { return Int(UIInterfaceOrientationMask.Landscape.toRaw()) }
SKSpriteNode
SKSpriteNode рдПрдХ рдорд╛рдирдХ рд╕реНрдкреНрд░рд╛рдЗрдЯ рд╣реИ рдЬреЛ рдмрдирд╛рд╡рдЯ (рдЧреНрд░рд╛рдлрд┐рдХ рдЫрд╡рд┐рдпрд╛рдБ) рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИред
рдЖрдЗрдП рдЗрд╕реЗ рдХрд░реАрдм рд╕реЗ рджреЗрдЦреЗрдВ, рдиреАрдЪреЗ рдХреА рдЫрд╡рд┐ рдореЗрдВ рд╣рдо рддреАрди рд╡рд╕реНрддреБрдУрдВ (рд╕реНрдкреНрд░рд╛рдЗрдЯ) рдХреЛ рджреЗрдЦрддреЗ рд╣реИрдВ:
рдмреНрд▓реВ рд╕реНрдХреНрд╡рд╛рдпрд░, рдмреЛрд░реНрдб рд╕реНрдкреНрд░рд╛рдЗрдЯ рдФрд░ рдмреИрдХрдЧреНрд░рд╛рдЙрдВрдб рд╕реНрдкреНрд░рд╛рдЗрдЯред
рдореИрдВрдиреЗ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ SKSpriteNode рдкреНрд░рдХрд╛рд░ рдХреА 3 рд╡рд╕реНрддреБрдУрдВ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд┐рдпрд╛ , рддрд╛рдХрд┐ рдЖрдк рдЙрдирдХреЗ рдирд┐рд░реНрдорд╛рдг рдореЗрдВ рдЕрдВрддрд░ рджреЗрдЦ рд╕рдХреЗрдВред
рдЖрд░рдВрдн рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, Xcode рдЦреЛрд▓реЗрдВ рдФрд░ рд╣рдорд╛рд░реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдПрдХ рдирдпрд╛ рдлрд╝реЛрд▓реНрдбрд░ рдмрдирд╛рдПрдВ рдФрд░ рдЗрд╕реЗ SpriteKitImage рдирд╛рдо рджреЗрдВ (рдЖрдк рдЬреЛ рдЪрд╛рд╣реЗрдВ рдЗрд╕реЗ рдирд╛рдо рджреЗ рд╕рдХрддреЗ рд╣реИрдВ)
рдЕрдЧрд▓рд╛, рдпрд╣рд╛рдВ рд╕реЗ рдЪрд┐рддреНрд░реЛрдВ рдХреЗ рд╕рд╛рде рд╕рдВрдЧреНрд░рд╣ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВ , рдлрд┐рд░ рдЗрд╕реЗ рдЕрдирдЬрд╝рд┐рдк рдХрд░реЗрдВ рдФрд░ рдЗрди рдЫрд╡рд┐рдпреЛрдВ рдХреЛ рд╣рдорд╛рд░реЗ рдмрд╕ рдмрдирд╛рдП рдЧрдП рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдЬреЛрдбрд╝реЗрдВред
рдирд┐рд░реНрдорд╛рдг рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рд╕рднреА рдХреЛрдб рдиреАрдЪреЗ рд╕реНрдерд┐рдд рд╣реИ, рдпрд╣рд╛рдВ рдореИрдВ рдХреБрдЫ рдмрд┐рдВрджреБрдУрдВ рдХреА рд╡реНрдпрд╛рдЦреНрдпрд╛ рдХрд░реВрдВрдЧрд╛ред
рдкрд╣рд▓реЗ рд╕реНрдкреНрд░рд╛рдЗрдЯ рдХреЛ BackgroundSprite рдирд╛рдо рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЗрд╕реЗ рдмрдирд╛рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рд╣рдо рдкреНрд░рдХрд╛рд░ SKTexture рдХрд╛ рдПрдХ рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рддреЗ рд╣реИрдВ , рдФрд░ рдПрдХ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдЗрд╕рдореЗрдВ рд╣рдорд╛рд░реА рдЫрд╡рд┐ рдХрд╛ рдирд╛рдо рдкрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВред рдЗрд╕ рд╡рд╕реНрддреБ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреНрдпреЛрдВ рд╣реИ?
рд╕реНрдкреНрд░рд┐рдЯ рдмрдирд╛рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рд╣реА рд╣рдо рдЫрд╡рд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрдирд╛рд╡рдЯ рдмрд╣реБрдд рдЙрдкрдпреЛрдЧреА рд╣реЛрддреЗ рд╣реИрдВ, рдЙрдирдХреА рдорджрдж рд╕реЗ рдЖрдк рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХрд╛ рдЖрд░реНрдерд┐рдХ рд░реВрдк рд╕реЗ рдкреНрд░рдмрдВрдзрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдПрдХ рд╣реА рд╡рд╕реНрддреБ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрдИ рд╕реНрдкреНрд░рд╛рдЗрдЯ рджреНрд╡рд╛рд░рд╛ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдЕрдЧрд▓рд╛ рд╣рдо рдЖрдХрд╛рд░ рдФрд░ рд╕реНрдерд┐рддрд┐ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВред рд╕реНрдерд┐рддрд┐ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рд╢рдмреНрдж, SKSpriteNode рдореЗрдВ рд╣рдо рдЗрд╕реЗ рдЕрдкрдиреА рд╡рд╕реНрддреБ рдХреЗ рдордзреНрдп рд╕реЗ рдЧрд┐рдирддреЗ рд╣реИрдВ , рдЕрд░реНрдерд╛рдд рдЬрдм рд╡реЗ рдХрд╣рддреЗ рд╣реИрдВ рдХрд┐ рд╣рдордиреЗ рдРрд╕реЗ рд╕реНрдкреНрд░рд╛рдЗрдЯ рдХреЛ 100px рд╕реЗ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд┐рдпрд╛ рд╣реИ, рддреЛ рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рд╣рдордиреЗ рдЗрд╕рдХреЗ рдХреЗрдВрджреНрд░ рдмрд┐рдВрджреБ рдХреЛ 100px рд╕реЗ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░ рджрд┐рдпрд╛ рд╣реИред
рд╣рдо рдЖрдХрд╛рд░ рдФрд░ рд╕реНрдерд┐рддрд┐ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рд╣рдо рдПрдВрдХрд░рдкреНрд╡рд╛рдЗрдВрдЯ рд╕рдВрдкрддреНрддрд┐ рдХреЛ рдмрджрд▓рддреЗ рд╣реИрдВред рдЗрд╕реЗ рдмрджрд▓рдирд╛ рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ рд╣реИ, рдореИрдВрдиреЗ рдЕрдкрдиреА рдЫрд╡рд┐ рдХреЛ рдкреВрд░реНрдг рд╕реНрдХреНрд░реАрди рдкрд░ рдлрд┐рдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕реЗ рдФрд░ рдЕрдзрд┐рдХ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдРрд╕рд╛ рдХрд┐рдпрд╛ рдерд╛ред рдЕрдм рдЖрдк рд╕рдордЭ рдЬрд╛рдПрдВрдЧреЗ!
рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЬрд╛рдирддреЗ рд╣реИрдВ, рдПрдВрдХрд░рдкреЙрдЗрдВрдЯ рдПрдХ рд╕рдВрджрд░реНрдн рдмрд┐рдВрджреБ рд╣реИ, рдФрд░ рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ рдКрдкрд░ рд▓рд┐рдЦрд╛ рдерд╛, рд╣рдорд╛рд░реЗ рд╕реНрдкреНрд░рд╛рдЗрдЯ рдХреА рд╕реНрдерд┐рддрд┐ рдордзреНрдп рдореЗрдВ рдмрд┐рдВрджреБ рджреНрд╡рд╛рд░рд╛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХреА рдЬрд╛рддреА рд╣реИ, рдФрд░ рдЗрд╕рд▓рд┐рдП рдПрдВрдХрд░рдкреЙрдЗрдВрдЯ рдЗрд╕реЗ рдмрджрд▓ рджреЗрддрд╛ рд╣реИред рдмреЗрд╣рддрд░ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдЗрдП рдиреАрдЪреЗ рджреА рдЧрдИ рддрд╕реНрд╡реАрд░ рджреЗрдЦреЗрдВ:
рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдХрд╛рд░реНрдЯреЗрд╢рд┐рдпрди рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдЫрд╡рд┐ рдкрд░ рддреИрдпрд╛рд░ рдХрд┐рдП рдЧрдП рд╣реИрдВред рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, SKSpriteNode рдСрдмреНрдЬреЗрдХреНрдЯ рдореЗрдВ (0.5, 0.5) рдХрд╛ рдПрдХ рдПрдВрдХрд░рдкреЙрдЗрдВрдЯ рд╣реИ, рдЬреЛ рдХрд┐ рдХреЗрдВрджреНрд░рд┐рдд рд╣реИред рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рдореИрдВрдиреЗ рдЗрд╕ рд╕рдВрдкрддреНрддрд┐ рдХреЛ рдмрджрд▓ рджрд┐рдпрд╛ рдФрд░ рдЗрд╕реЗ (0, 0) рдХреЗ рдмрд░рд╛рдмрд░ рд╕реЗрдЯ рдХрд░ рджрд┐рдпрд╛, рдЕрдЧрд░ рд╣рдо рдЫрд╡рд┐ рдХреЛ рдлрд┐рд░ рд╕реЗ рджреЗрдЦрддреЗ рд╣реИрдВ рддреЛ рд╣рдо рджреЗрдЦреЗрдВрдЧреЗ рдХрд┐ рдпрд╣ рдмрд┐рдВрджреБ рдирд┐рдЪрд▓реЗ рдмрд╛рдПрдВ рдХреЛрдиреЗ рдореЗрдВ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдЕрдм рд╣рдорд╛рд░рд╛ рд╢реБрд░реБрдЖрддреА рдмрд┐рдВрджреБ рдмреАрдЪ рдореЗрдВ рдирд╣реАрдВ рд╣реЛрдЧрд╛, рд▓реЗрдХрд┐рди рдиреАрдЪреЗ рд╕реЗ рдмрд╛рдИрдВ рдУрд░ред рдФрд░ рдЕрдм рдЕрдЧрд░ рд╡реЗ рдХрд╣рддреЗ рд╣реИрдВ рдХрд┐ рд╣рдордиреЗ 100px рддрдХ рдЗрд╕ рддрд░рд╣ рдХреЗ рд╕реНрдкреНрд░рд╛рдЗрдЯ рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд┐рдпрд╛ рд╣реИ, рддреЛ рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рд╣рдордиреЗ рдЗрд╕рдХреЗ рд╕рдмрд╕реЗ рдирд┐рдЪрд▓реЗ рдФрд░ рд╕рдмрд╕реЗ рдмрд╛рдПрдВ рдмрд┐рдВрджреБ рдХреЛ 100px рд╕реЗ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░ рджрд┐рдпрд╛ рд╣реИред
рдЕрдЧрд▓рд╛, рд╣рдо рдПрдХ рдирд╛рдо рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рддреЗ рд╣реИрдВ, рдпрд╣ рднреА рдПрдХ рдмрд╣реБрдд рд╣реА рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╕рдВрдкрддреНрддрд┐ рд╣реИ, рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдЗрд╕реЗ рд▓рд┐рдЦрдирд╛ рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ рдерд╛, рдХреНрдпреЛрдВрдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЕрднреА рддрдХ рдХреЛрдИ рдХрд╛рд░реНрд░рд╡рд╛рдИ рдирд╣реАрдВ рд╣реБрдИ рд╣реИред
рдЖрдкрдХреЛ рдПрдХ рдирд╛рдо рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреНрдпреЛрдВ рд╣реИ? рдЗрд╕рдХреЗ рджреНрд╡рд╛рд░рд╛ рд╣рдо рдЕрдкрдиреА рд╡рд╕реНрддреБрдУрдВ рдХреЛ рдкрд╛рдПрдВрдЧреЗ, рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░реЗрдВрдЧреЗ рдФрд░ рдЕрд▓рдЧ рдкрд╣рдЪрд╛рди рджреЗрдВрдЧреЗред рдирд╛рдо рдЪреБрдирддреЗ рд╕рдордп рд╕рд╛рд╡рдзрд╛рди рд░рд╣реЗрдВ! ред
рд╣рдорд╛рд░реЗ рджреНрд╡рд╛рд░рд╛ рдЖрд╡рд╢реНрдпрдХ рдЧреБрдгреЛрдВ рдХреЛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рд╣рдо рдЕрдкрдиреЗ рджреГрд╢реНрдп рдХреА рдУрд░ рдореБрдбрд╝рддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕рдХреА рд╡рд┐рдзрд┐ рдпрд╛ рдХрд╛рд░реНрдп рдХреЛ рдХрд╣рддреЗ рд╣реИрдВ:
addChild - рдПрдХ рд╡рдВрд╢рдЬ рдЬреЛрдбрд╝реЗрдВред (рдПрдХ рдиреЛрдб рдХреЛ рджреВрд╕рд░реЗ рдореЗрдВ рдЬреЛрдбрд╝реЗрдВ) , рдЬреЛ рджреГрд╢реНрдп рдореЗрдВ рд╣рдорд╛рд░реА рд╡рд╕реНрддреБ рдХреЛ рдЬреЛрдбрд╝рддрд╛ рд╣реИред |
рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ рдКрдкрд░ рд▓рд┐рдЦрд╛ рд╣реИ, рд╣рдорд╛рд░рд╛ рджреГрд╢реНрдп SKNode рд╕реЗ рдПрдХ рд╡рд╛рд░рд┐рд╕ рднреА рд╣реИ рдФрд░ рдЗрд╕рд▓рд┐рдП рд╣рдо рдПрдХ рдиреЛрдб рдХреЛ рджреВрд╕рд░реЗ рдореЗрдВ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВред
рдпрд╣ рд╡рд┐рдзрд┐ рдпрд╛ рдлрд╝рдВрдХреНрд╢рди рдЙрд╕реА рддрд░рд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдпрджрд┐ рдЖрдк рдЪрд╛рд╣реЗрдВ, рддреЛ рдХрд╣реЗрдВ, рдПрдХ рд╕реНрдкреНрд░рд╛рдЗрдЯ рдХреЛ рджреВрд╕рд░реЗ рдореЗрдВ рдЬреЛрдбрд╝реЗрдВред
SimpleSprite рдирд╛рдо рдХреЗ рд╕рд╛рде рджреВрд╕рд░рд╛ рд╕реНрдкреНрд░рд╛рдЗрдЯ, рдЗрд╕реЗ рдмрдирд╛рддреЗ рд╕рдордп, рд╣рдо рджреЛ рдкреИрд░рд╛рдореАрдЯрд░ рдкрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВ: рд░рдВрдЧ рдФрд░ рдЖрдХрд╛рд░ред
рдПрдХ рд░рдВрдЧ рдХреЗ рд░реВрдк рдореЗрдВ, рд╣рдо UIColor рдкреНрд░рдХрд╛рд░ рдХрд╛ рдПрдХ рдСрдмреНрдЬреЗрдХреНрдЯ рдкрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВ, рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ рдКрдкрд░ рд▓рд┐рдЦрд╛ рдерд╛, рд╣рдо SKColor рдкрд╛рд░рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдпрд╣ рдПрдХ рддреНрд░реБрдЯрд┐ рдирд╣реАрдВ рд╣реЛрдЧреАред
рдПрдХ рдЕрдиреНрдп рдмрд┐рдВрджреБ zPosition рд╣реИ , рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЬрд╛рдирддреЗ рд╣реИрдВ zPosition - Z рдЕрдХреНрд╖ рдХреЗ рд╕рд╛рдкреЗрдХреНрд╖ рд╣рдорд╛рд░реЗ рдиреЛрдб рдХреА рд╕реНрдерд┐рддрд┐ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддрд╛ рд╣реИред
рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, рдпрд╣ рдЧреБрдг 0 рд╣реИ ред рдЬрдм рдореИрдВрдиреЗ рдЕрдкрдиреА рд╡рд╕реНрддреБрдУрдВ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд┐рдпрд╛, рддреЛ рдХрд┐рд╕реА рдХрд╛рд░рдг рд╕реЗ, SimpleSprite рдирд╛рдордХ рдПрдХ рд╡рд╕реНрддреБ - рджреВрд╕рд░реА рд╡рд╕реНрддреБ, рд╢реЗрд╖ рдХреЗ рдЕрдзреАрди рдереА, рдЬрд╛рд╣рд┐рд░рд╛ рддреМрд░ рдкрд░ рдЗрд╕рдХреЗ рдкреНрд░рд╛рд░рдВрдн рдХреА рдЦрд╝рд╛рд╕рд┐рдпрдд рдХреЗ рдХрд╛рд░рдг рдФрд░ рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рдЗрд╕ рд╕реНрдкреНрд░рд╛рдЗрдЯ рдХреЛ 1 рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП zPosition рд╕рдВрдкрддреНрддрд┐ рдХреЛ рд╕реМрдВрдкрд╛ред
рдПрдХ рдФрд░ рдмрд╣реБрдд рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд┐рдВрджреБ: рдПрдХ рд╣реА рд╡рд┐рдорд╛рди рдкрд░ рдирд╣реАрдВ рд╣реЛрдиреЗ рдХреЗ рдХрд╛рд░рдг рдмрд╛рддрдЪреАрдд рдирд╣реАрдВ рд╣реЛ рд╕рдХрддреА рд╣реИ!
рдпрд╣реА рд╣реИ, рдЕрдЧрд░ рдПрдХ zPosition 0 рд╣реИ, рдФрд░ рджреВрд╕рд░рд╛ 1 рд╣реИ рддреЛ рд╡реЗ рд╕рдВрдкрд░реНрдХ рдореЗрдВ рдирд╣реАрдВ рд░рд╣реЗрдВрдЧреЗ!
рддреАрд╕рд░рд╛ рд╕реНрдкреНрд░рд╛рдЗрдЯ, ImageSprite рдирд╛рдо рдХреЗ рд╕рд╛рде, рдЗрд╕рдХреА рд╢реБрд░реБрдЖрдд рдХреЗ рджреМрд░рд╛рди, рд╣рдордиреЗ рдПрдХ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдЕрдкрдиреА рддрд╕реНрд╡реАрд░ рдХрд╛ рдирд╛рдо рдЗрд╕реЗ рдкрд╛рд░рд┐рдд рдХрд░ рджрд┐рдпрд╛ред
рдпрд╣ рд╡рд┐рдзрд┐, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рдкрд╣рд▓реЗ рд╕реЗ рднрд┐рдиреНрди рд╣реИ, рдЬрд╣рд╛рдВ рд╣рдордиреЗ рдЯрд╛рдЗрдк рдПрд╕рдХреЗрдЯреАрдЪрд░ рдХрд╛ рдПрдХ рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рдпрд╛ рдерд╛, рд▓реЗрдХрд┐рди рдпрд╣ рд╕рд╛рдзрд╛рд░рдгреАрдХрд░рдг рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдЙрдкрдпреБрдХреНрдд рд╣реИред
рдСрдмреНрдЬреЗрдХреНрдЯрд┐рд╡-рд╕реА
рдСрдмреНрдЬреЗрдХреНрдЯрд┐рд╡-рд╕реА
#import "GameScene.h" @implementation GameScene -(void)didMoveToView:(SKView *)view { [self SceneSetting]; [self SKSpriteNodeDemo]; // } -(void)SceneSetting { self.backgroundColor = [SKColor orangeColor]; } -(void)SKSpriteNodeDemo { // SKTexture . . SKTexture *Texture = [SKTexture textureWithImageNamed:@"desert_BG"]; // SKSpriteNode . SKTexture, . SKSpriteNode *BackgroundSprite = [SKSpriteNode spriteNodeWithTexture:Texture]; BackgroundSprite.size = CGSizeMake(640, 320); // . BackgroundSprite.position = CGPointMake(0, 0); // . BackgroundSprite.anchorPoint = CGPointMake(0, 0); // . BackgroundSprite.name = @"BackgroundSprite";// . [self addChild:BackgroundSprite];// . // SKSpriteNode . . SKSpriteNode *SimpleSprite = [SKSpriteNode spriteNodeWithColor:[UIColor blueColor] size:CGSizeMake(50, 50)]; SimpleSprite.position = CGPointMake(200, 150);// . SimpleSprite.zPosition = 1;// Z. SimpleSprite.name = @"SimpleSprite";// . [self addChild:SimpleSprite];// . // SKSpriteNode . . SKSpriteNode *ImageSprite = [SKSpriteNode spriteNodeWithImageNamed:@"DerevoOpora"]; ImageSprite.position = CGPointMake(250, 50);// . ImageSprite.size = CGSizeMake(100, 15);// . ImageSprite.name = @"ImageSprite";// . [self addChild:ImageSprite];// . } @end
Swift
Swift
import SpriteKit class GameScene: SKScene { override func didMoveToView(view: SKView) { SceneSetting() SKSpriteNodeDemo() // . } func SceneSetting() { self.backgroundColor = SKColor.orangeColor() } func SKSpriteNodeDemo() { // Texture SKTexture. var Texture = SKTexture(imageNamed: "desert_BG") // BackgroundSprite SKSpriteNode. // SKTexture . var BackgroundSprite = SKSpriteNode(texture: Texture) BackgroundSprite.size = CGSizeMake(640, 320) // . BackgroundSprite.position = CGPointMake(0, 0) // . BackgroundSprite.anchorPoint = CGPointMake(0, 0) // . BackgroundSprite.name = "BackgroundSprite" // . self.addChild(BackgroundSprite) // . // SimpleSprite SKSpriteNode. // . var SimpleSprite = SKSpriteNode(color: UIColor.blueColor(), size: CGSizeMake(50, 50)) SimpleSprite.position = CGPointMake(200, 150) // . SimpleSprite.zPosition = 1; // Z. SimpleSprite.name = "SimpleSprite" // . self.addChild(SimpleSprite) // . // ImageSprite SKSpriteNode. // . var ImageSprite = SKSpriteNode(imageNamed: "DerevoOpora") ImageSprite.position = CGPointMake(250, 50) // . ImageSprite.size = CGSizeMake(100, 15) // . ImageSprite.name = "ImageSprite" // . self.addChild(ImageSprite) // . } }
, SKSpriteNode , , Node тАФ SKShapeNode .
SKShapeNode
SKShapeNode - рдпрд╣ рдПрдХ рд╕рдордЧреНрд░ рд╕реНрдкреНрд░рд╛рдЗрдЯ рд╣реИ - рдПрдХ рд╡рд╕реНрддреБ рдЬреЛ рд▓рдЧрднрдЧ рдХрд┐рд╕реА рднреА рд░реВрдк рд▓реЗ рд╕рдХрддреА рд╣реИред рдпрд╣реА рд╣реИ, рдпрд╣ рд▓рдЧрднрдЧ рдХрд┐рд╕реА рднреА рдЬреНрдпрд╛рдорд┐рддреАрдп рдЖрдХрд╛рд░ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ: рд╕рд░реНрдХрд▓, рд╕реНрдХреНрд╡рд╛рдпрд░, рддреНрд░рд┐рднреБрдЬ, рдПрд▓реАрдкред
рдпрд╣ SKSpriteNode рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдирд┐рд░реНрдорд╛рдг рдореЗрдВ рдереЛрдбрд╝рд╛ рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣рд╛рдБ рдкреВрд░рд╛ рдлреЙрд░реНрдо рд╕рдордЧреНрд░ рд╣реИред рд▓реЗрдХрд┐рди рдЬрдЯрд┐рд▓ рд░реВрдкреЛрдВ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдореЗрдВ рдпрд╣ рдЕрдкрд░рд┐рд╣рд╛рд░реНрдп рд╣реИ, рдЗрд╕рдХреЗ рдмрд┐рдирд╛ рдЗрд╕реЗ рдкреНрд░рдмрдВрдзрд┐рдд рдХрд░рдирд╛ рдмрд╣реБрдд рдореБрд╢реНрдХрд┐рд▓ рд╣реИред
рдкрд░реНрдпрд╛рдкреНрдд рд╢рдмреНрдж рдареАрдХ рд╣реИ, рдЪрд▓реЛ рд╡реНрдпрд╛рдкрд╛рд░ рдХреЗ рд▓рд┐рдП рдиреАрдЪреЗ рдЙрддрд░реЛ!
рдЖрдЗрдП рдПрдХ рд╡рд┐рдзрд┐ рдпрд╛ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рджреЗрдЦреЗрдВ рдЬрд┐рд╕рдореЗрдВ рдКрдкрд░ рджрд┐рдП рдЧрдП рдЖрдВрдХрдбрд╝реЗ рд▓рд╛рдЧреВ рдХрд┐рдП рдЧрдП рд╣реИрдВ, рдкреВрд░реНрдг рдХреЛрдб рдиреАрдЪреЗ рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдЗрд╕рд▓рд┐рдП, рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рдкрд┐рдЫрд▓реА рд╡рд┐рдзрд┐ рдпрд╛ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдЯрд┐рдкреНрдкрдгреА рдХреА рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрджрд┐ рдЖрдк рдкрд┐рдЫрд▓реА рд╡рд╕реНрддреБрдУрдВ рдХреЛ рдирд╣реАрдВ рджреЗрдЦрддреЗ рд╣реИрдВ рддреЛ рдбрд░реЗ рдирд╣реАрдВред
рдСрдмреНрдЬреЗрдХреНрдЯрд┐рд╡-рд╕реА
рдСрдмреНрдЬреЗрдХреНрдЯрд┐рд╡-рд╕реА
-(void)SKShapeNodeDemo { // SKShapeNode . . SKShapeNode *Circle = [SKShapeNode shapeNodeWithCircleOfRadius:20]; Circle.position = CGPointMake(50, 200); // . Circle.lineWidth = 10; // . Circle.strokeColor = [SKColor blueColor]; // . Circle.fillColor = [SKColor redColor]; // . Circle.name = @"Circle"; // . [self addChild:Circle]; // . // SKShapeNode . (CGRectMake). SKShapeNode *Quad = [SKShapeNode shapeNodeWithRect:CGRectMake(0, 0, 50, 50)]; Quad.position = CGPointMake(100, 200); // . Quad.lineWidth = 4; // . Quad.strokeColor = [SKColor whiteColor]; // . Quad.fillColor = [SKColor blackColor]; // . Quad.name = @"Quad"; // . [self addChild:Quad]; // . // SKShapeNode . (CGRectMake). // . SKShapeNode *Ellips = [SKShapeNode shapeNodeWithEllipseInRect:CGRectMake(0, 0, 50, 90)]; Ellips.position = CGPointMake(200, 200); // . Ellips.lineWidth = 2; // . Ellips.strokeColor = [SKColor greenColor]; // . Ellips.fillColor = [SKColor purpleColor]; // . Ellips.glowWidth = 5; // . Ellips.name = @"Ellips"; // . [self addChild:Ellips]; // . // UIBezierPath. (CGRectMake), // . UIBezierPath *RoundedRectPath = [UIBezierPath bezierPathWithRoundedRect:CGRectMake(0, 0, 50, 50) cornerRadius:12]; // SKShapeNode . . // , CGPath. SKShapeNode *RoundedRect = [ SKShapeNode shapeNodeWithPath:RoundedRectPath.CGPath centered:YES]; RoundedRect.position = CGPointMake(50, 100); // . RoundedRect.lineWidth = 2; // . RoundedRect.strokeColor = [SKColor blueColor]; // . RoundedRect.fillColor = [SKColor redColor]; // . RoundedRect.name = @"RoundedRect"; // . [self addChild:RoundedRect]; // . UIBezierPath *TrianglePath = [UIBezierPath bezierPath]; // UIBezierPath. [TrianglePath moveToPoint:CGPointMake(0, 0)]; // . [TrianglePath addLineToPoint:CGPointMake(-25, -50)]; // . [TrianglePath addLineToPoint:CGPointMake(25, -50)]; // . [TrianglePath addLineToPoint:CGPointMake(0, 0)]; // . // SKShapeNode . . // , CGPath. SKShapeNode *Triangle = [SKShapeNode shapeNodeWithPath:TrianglePath.CGPath centered:YES]; Triangle.position = CGPointMake(200, 70); // . Triangle.lineWidth = 2; // . Triangle.strokeColor = [SKColor blackColor]; // . Triangle.fillColor = [SKColor blueColor]; // . Triangle.name = @"Triangle"; // . [self addChild:Triangle]; // . }
рддреАрд╡реНрд░
рддреАрд╡реНрд░
func SKShapeNodeDemo() { // Circle SKShapeNode. . var Circle = SKShapeNode(circleOfRadius: 20) Circle.position = CGPointMake(50, 200) // . Circle.lineWidth = 10 // . Circle.strokeColor = SKColor.blueColor() // . Circle.fillColor = SKColor.redColor() // . Circle.name = "Circle" // . self.addChild(Circle) // . // Quad SKShapeNode. // (CGRectMake). var Quad = SKShapeNode(rect: CGRectMake(0, 0, 50, 50)) Quad.position = CGPointMake(100, 200) // . Quad.lineWidth = 4 // . Quad.strokeColor = SKColor.whiteColor() // . Quad.fillColor = SKColor.blackColor() // . Quad.name = "Quad" // . self.addChild(Quad) // . // Ellips SKShapeNode. // . var Ellips = SKShapeNode(ellipseInRect: CGRectMake(0, 0, 50, 90)) Ellips.position = CGPointMake(200, 200) // . Ellips.lineWidth = 2 // . Ellips.strokeColor = SKColor.greenColor() // . Ellips.fillColor = SKColor.purpleColor() // . Ellips.glowWidth = 5 // . Ellips.name = "Ellips" // . self.addChild(Ellips) // . // RoundedRectPath UIBezierPath. // (CGRectMake), . var RoundedRectPath = UIBezierPath(roundedRect: CGRectMake(0, 0, 50, 50), cornerRadius: 12) // RoundedRect SKShapeNode. // . // , CGPath. var RoundedRect = SKShapeNode(path: RoundedRectPath.CGPath, centered:true) RoundedRect.position = CGPointMake(50, 100) // . RoundedRect.lineWidth = 2 // . RoundedRect.strokeColor = SKColor.blueColor() // . RoundedRect.fillColor = SKColor.redColor() // . RoundedRect.name = "RoundedRect" // . self.addChild(RoundedRect) // . var TrianglePath = UIBezierPath() // UIBezierPath. TrianglePath.moveToPoint(CGPointMake(0, 0)) // . TrianglePath.addLineToPoint(CGPointMake(-25, -50)) // . TrianglePath.addLineToPoint(CGPointMake(25, -50)) // . TrianglePath.addLineToPoint(CGPointMake(0, 0)) // . // Triangle SKShapeNode. // . // , CGPath. var Triangle = SKShapeNode(path: TrianglePath.CGPath, centered: true) Triangle.position = CGPointMake(200, 70) // . Triangle.lineWidth = 2 // . Triangle.strokeColor = SKColor.blackColor() // . Triangle.fillColor = SKColor.blueColor() // . Triangle.name = "Triangle" // . self.addChild(Triangle) // . }
рдореЗрдВ SKShapeNode рд╡рд╣рд╛рдБ рдкреНрд░рд╛рд░рдВрдн рдХрд░рдиреЗ рдХреЗ рдХрдИ рддрд░реАрдХреЗ рд╣реИрдВ, рд╡реЗ рджреЛ рд╕рдореВрд╣реЛрдВ рдореЗрдВ рдмрд╛рдВрдЯрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:
рд╕реНрдЯреИрдВрдбрд░реНрдб рдкреНрд░рд╛рд░рдВрдн рдпрд╛ рдкреНрд░рд╛рд░рдВрдн рд╡рд╕реНрддреБ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ UIBezierPath ред
рдЖрдЗрдП рдЙрди рдкрд░ рдЕрд▓рдЧ рд╕реЗ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ!
рдорд╛рдирдХ рдЖрд░рдВрднреАрдХрд░рдг
тАв рд╕рд╛рдзрд╛рд░рдг рдЖрд░рдВрднреАрдХрд░рдг рд╡рд╛рд▓реА рд╡рд╕реНрддреБрдПрдБ рдкрд╣рд▓реЗ рд╕рдореВрд╣ рдореЗрдВ рдЖрддреА рд╣реИрдВред рдЗрд╕рдХрд╛ рдХреНрдпрд╛ рдорддрд▓рдм рд╣реИ? рдпреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЬрд┐рди рд╡рд╕реНрддреБрдУрдВ рдХреЗ рдЖрд░рдВрднреАрдХрд░рдг рдкрд░ рдлрд╛рд░реНрдо рдкрд╣рд▓реЗ рд╣реА рдмрдирд╛рдП рдЬрд╛ рдЪреБрдХреЗ рд╣реИрдВ, рдФрд░ рдЖрдкрдХреЛ рдмрд╕ рдЗрд╕рдХреЗ рдкреИрд░рд╛рдореАрдЯрд░ рд╕реЗрдЯ рдХрд░рдиреЗ рд╣реЛрдВрдЧреЗред рдЕрдм рдЖрдк рд╕рдордЭ рдЬрд╛рдПрдВрдЧреЗ!
рд╡реГрддреНрдд
, Circle . , shapeNodeWithCircleOfRadius circleOfRadius (-) .
Objective-c
Swift
, , . , , . lineWidth , (), , . : strokeColor fillColor . тАв strokeColor тАФ ( ). тАв fillColor тАФ . , .
, , . |
рдЯреНрд░реИрдХреНрдЯрд░
Objective-c
Swift
// SKShapeNode . (CGRectMake). SKShapeNode *Quad = [SKShapeNode shapeNodeWithRect:CGRectMake(0, 0, 50, 50)]; Quad.position = CGPointMake(100, 200); // . Quad.lineWidth = 4; // . Quad.strokeColor = [SKColor whiteColor]; // . Quad.fillColor = [SKColor blackColor]; // . Quad.name = @"Quad"; // . [self addChild:Quad]; // .
Swift
// Quad SKShapeNode. // (CGRectMake). var Quad = SKShapeNode(rect: CGRectMake(0, 0, 50, 50)) Quad.position = CGPointMake(100, 200) // . Quad.lineWidth = 4 // . Quad.strokeColor = SKColor.whiteColor() // . Quad.fillColor = SKColor.blackColor() // . Quad.name = "Quad" // . self.addChild(Quad) // .
Quad , , . , (CGRectMake).
, , : . : x тАФ X, y тАФ Y. . |
Ellips
Objective-c
Swift
// SKShapeNode . (CGRectMake). // . SKShapeNode *Ellips = [SKShapeNode shapeNodeWithEllipseInRect:CGRectMake(0, 0, 50, 90)]; Ellips.position = CGPointMake(200, 200); // . Ellips.lineWidth = 2; // . Ellips.strokeColor = [SKColor greenColor]; // . Ellips.fillColor = [SKColor purpleColor]; // . Ellips.glowWidth = 5; // . Ellips.name = @"Ellips"; // . [self addChild:Ellips]; // .
Swift
// Ellips SKShapeNode. // . var Ellips = SKShapeNode(ellipseInRect: CGRectMake(0, 0, 50, 90)) Ellips.position = CGPointMake(200, 200) // . Ellips.lineWidth = 2 // . Ellips.strokeColor = SKColor.greenColor() // . Ellips.fillColor = SKColor.purpleColor() // . Ellips.glowWidth = 5 // . Ellips.name = "Ellips" // . self.addChild(Ellips) // .
Ellips , . , . shapeNodeWithEllipseInRect ellipseInRect . (CGRectMake) , .
, , glowWidth тАв glowWidth тАФ , , . |
рдареАрдХ рд╣реИ, рдЖрдкрдиреЗ рдкрд╣рд▓реЗ рд╕рдореВрд╣ рд╕реЗ рд╕рд░рд▓ рдЖрд░рдВрдн рдХреЗ рдХреБрдЫ рддрд░реАрдХреЛрдВ рдпрд╛ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рджреЗрдЦрд╛ред рдмреЗрд╢рдХ, рдореИрдВ рд╕рдм рдХреБрдЫ рд╕реВрдЪреАрдмрджреНрдз рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛, рдФрд░ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЖрдкрдХреЗ рд▓рд┐рдП рдЦреБрдж рдХреЛ рд╕рдордЭрд╛рдирд╛ рдЕрдзрд┐рдХ рджрд┐рд▓рдЪрд╕реНрдк рд╣реЛрдЧрд╛ред
UIBezierPath рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рд╕рд╛рде рдкреНрд░рд╛рд░рдВрднрд┐рдХрдХрд░рдг
тАв рджреВрд╕рд░реЗ рд╕рдореВрд╣ рдореЗрдВ рд╡реЗ рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ, рдЬрд┐рдирдХрд╛ рдЖрд░рдВрднрд┐рдХ рдЙрдкрдпреЛрдЧ UIBezierPath рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ ред
рдЗрд╕рдХрд╛ рдХреНрдпрд╛ рдорддрд▓рдм рд╣реИ?рдЕрдм рддрдХ, рд╣рдордиреЗ рдЙрди рд╡рд╕реНрддреБрдУрдВ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд┐рдпрд╛ рд╣реИ рдЬрд┐рдирдХреЗ рдЖрдХрд╛рд░ рдЬреНрдЮрд╛рдд рдереЗ рдФрд░ рд╣рдореЗрдВ рдХреЗрд╡рд▓ рдкреИрд░рд╛рдореАрдЯрд░ рдкрд╛рд╕ рдХрд░рдирд╛ рдерд╛, рд▓реЗрдХрд┐рди рдХреНрдпрд╛ рд╣реЛрдЧрд╛ рдЕрдЧрд░ рд╣рдо рдПрдХ рддреНрд░рд┐рдХреЛрдг рдмрдирд╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП? рдРрд╕реА рдХреЛрдИ рдЖрд░рдВрднрд┐рдХ рд╡рд┐рдзрд┐ рдирд╣реАрдВ рд╣реИ! рдРрд╕реЗ рдорд╛рдорд▓реЛрдВ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ UIBezierPath рдкреНрд░рдХрд╛рд░ рдХреА рдПрдХ рд╡рд╕реНрддреБ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ ред
рдЗрд╕ рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рдЖрдк рдХреЛрдИ рднреА рдлреЙрд░реНрдо рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рдлрд┐рд░ рдЗрд╕реЗ рд╣рдорд╛рд░реЗ SKShapeNode рдХреЛ рдкрд╛рд╕ рдХрд░ рджреЗрдВрдЧреЗ, рдЬреЛ рдмрд╛рдж рдореЗрдВ рдЗрд╕реЗ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░реЗрдЧрд╛ред
RoundedRect
Objective-c
Swift
// UIBezierPath. (CGRectMake), // . UIBezierPath *RoundedRectPath = [UIBezierPath bezierPathWithRoundedRect:CGRectMake(0, 0, 50, 50) cornerRadius:12]; // SKShapeNode . . // , CGPath. SKShapeNode *RoundedRect = [ SKShapeNode shapeNodeWithPath:RoundedRectPath.CGPath centered:YES]; RoundedRect.position = CGPointMake(50, 100); // . RoundedRect.lineWidth = 2; // . RoundedRect.strokeColor = [SKColor blueColor]; // . RoundedRect.fillColor = [SKColor redColor]; // . RoundedRect.name = @"RoundedRect"; // . [self addChild:RoundedRect]; // .
Swift
// RoundedRectPath UIBezierPath. // (CGRectMake), . var RoundedRectPath = UIBezierPath(roundedRect: CGRectMake(0, 0, 50, 50), cornerRadius: 12) // RoundedRect SKShapeNode. // . // , CGPath. var RoundedRect = SKShapeNode(path: RoundedRectPath.CGPath, centered:true) RoundedRect.position = CGPointMake(50, 100) // . RoundedRect.lineWidth = 2 // . RoundedRect.strokeColor = SKColor.blueColor() // . RoundedRect.fillColor = SKColor.redColor() // . RoundedRect.name = "RoundedRect" // . self.addChild(RoundedRect) // .
, RoundedRect .
, UIBezierPath , : (CGRectMake) . , () . UIBezierPath , SKShapeNode , . UIBezierPath , centered . , CGPath , ; , ! , тАФ centered , ! , . , . |
рддреНрд░рд┐рднреБрдЬ
Objective-c
Swift
UIBezierPath *TrianglePath = [UIBezierPath bezierPath]; // UIBezierPath. [TrianglePath moveToPoint:CGPointMake(0, 0)]; // . [TrianglePath addLineToPoint:CGPointMake(-25, -50)]; // . [TrianglePath addLineToPoint:CGPointMake(25, -50)]; // . [TrianglePath addLineToPoint:CGPointMake(0, 0)]; // . // SKShapeNode . . // , CGPath. SKShapeNode *Triangle = [SKShapeNode shapeNodeWithPath:TrianglePath.CGPath centered:YES]; Triangle.position = CGPointMake(200, 70); // . Triangle.lineWidth = 2; // . Triangle.strokeColor = [SKColor blackColor]; // . Triangle.fillColor = [SKColor blueColor]; // . Triangle.name = @"Triangle"; // . [self addChild:Triangle]; // .
Swift
var TrianglePath = UIBezierPath() // UIBezierPath. TrianglePath.moveToPoint(CGPointMake(0, 0)) // . TrianglePath.addLineToPoint(CGPointMake(-25, -50)) // . TrianglePath.addLineToPoint(CGPointMake(25, -50)) // . TrianglePath.addLineToPoint(CGPointMake(0, 0)) // . // Triangle SKShapeNode. // . // , CGPath. var Triangle = SKShapeNode(path: TrianglePath.CGPath, centered: true) Triangle.position = CGPointMake(200, 70) // . Triangle.lineWidth = 2 // . Triangle.strokeColor = SKColor.blackColor() // . Triangle.fillColor = SKColor.blueColor() // . Triangle.name = "Triangle" // . self.addChild(Triangle) // .
Triangle . UIBezierPath . . , UIBezierPath , TrianglePath .
, . ! , , , . moveToPoint UIBezierPath . (), , , addLineToPoint . , , , ( ). . TrianglePath . SKShapeNode Triangle , ┬л┬╗ ! |
тАв рдЗрдВрдЯрд░рдиреЗрдЯ UIBezierPath рдЬреИрд╕реА рдПрдХ рд╡рд╕реНрддреБ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рд╕реЗ рднрд░рд╛ рд╣реИ , рдореИрдВ рдЖрдкрдХреЛ рдЦреЛрдЬрдиреЗ рдФрд░ рдкрдврд╝рдиреЗ рдХреА рд╕рд▓рд╛рд╣ рджреЗрддрд╛ рд╣реВрдВ!
рдореИрдВрдиреЗ рдпрд╣ рд╕рдордЭрд╛рдиреЗ рдХрд╛ рд╡рд╛рджрд╛ рдХрд┐рдпрд╛ рдХрд┐ рдХреЗрдВрджреНрд░рд┐рдд рдкреИрд░рд╛рдореАрдЯрд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреНрдпреЛрдВ рд╣реИ ред рдореИрдВрдиреЗ рдРрд╕рд╛ рдкрд╣рд▓реЗ рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИ, рдмрд╕ рддрд╛рдХрд┐ рдЖрдк SKShapeNode рдЬреИрд╕реА рд╡рд╕реНрддреБрдУрдВ рдХреА рдореВрд▓ рд╕рдВрд░рдЪрдирд╛ рдХреЛ рд╕рдордЭ рд╕рдХреЗрдВ ред рддреЛ, рдХреЗрдВрджреНрд░рд┐рдд рдкреИрд░рд╛рдореАрдЯрд░ , рдпрджрд┐ рдпрд╣ рдПрдХ рд╕рдХрд╛рд░рд╛рддреНрдордХ рдореВрд▓реНрдп рд▓реЗрддрд╛ рд╣реИ, рддреЛ SKShapeNode рдкреНрд░рдХрд╛рд░ рдХреА рд╡рд╕реНрддреБ рдХреА рд╕реНрдерд┐рддрд┐ рдХреЛ рдмреАрдЪ рд╕реЗ рдЧрд┐рдирд╛ рдЬрд╛рдПрдЧрд╛ред рдпрд╛рдж рд░рдЦреЗрдВ, рдЬрдм рдореИрдВрдиреЗ рдЖрдкрдХреЛ SKSpriteNode рдкреНрд░рдХрд╛рд░ рдХреА рд╡рд╕реНрддреБрдУрдВ рдХреА рд╕реНрдерд┐рддрд┐ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕рдордЭрд╛рдпрд╛, рддреЛ рдореИрдВрдиреЗ рдЖрдкрдХреЛ рдмрддрд╛рдпрд╛ рдХрд┐ рдЙрдирдХреА рд╕реНрдерд┐рддрд┐ рдХреЛ рдмреАрдЪ рд╕реЗ рдЧрд┐рдирд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, рдпрджрд┐ рдХреЗрдиреНрджреНрд░рд┐рдд рдкреИрд░рд╛рдореАрдЯрд░ рд╕рдХрд╛рд░рд╛рддреНрдордХ рд╣реИ, рддреЛ рдЗрд╕ рд╡рд╕реНрддреБ рдХреА рд╕реНрдерд┐рддрд┐ рдХреА рдЧрдгрдирд╛ рдордзреНрдп рд╕реЗ рдХреА рдЬрд╛рдПрдЧреАред
рдпрд╣ рдХрд╛рдлреА рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рд╕рд╡рд╛рд▓ рд╣реИ рдХрд┐ рдХреИрд╕реЗ рддрдм SKShapeNode рдкреНрд░рдХрд╛рд░ рдХреА рд╕рд░рд▓ рд╡рд╕реНрддреБрдУрдВ рдХреА рд╕реНрдерд┐рддрд┐ рдХреА рдЧрдгрдирд╛ рдХреА рдЬрд╛рддреА рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рд╡рд╕реНрддреБ рдХреЗрдВрджреНрд░рд┐рдд рдЖрд░рдВрднреАрдХрд░рдг рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд╕рд╛рде рдирд╣реАрдВ рдмрдирд╛рдИ рдЧрдИ рд╣реИ ?
рдЖрдЗрдП рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд░реВрдк рдореЗрдВ рдЙрд╕ рд╡рд╕реНрддреБ рдХреЛ рд▓реЗрдВ рдЬрд┐рд╕реЗ рд╣рдордиреЗ рдкрд╣рд▓реЗ рдХреНрд╡рд╛рдб рдирд╛рдо рд╕реЗ рджреЗрдЦрд╛ рдерд╛ ред рд╣рдордиреЗ рдЗрд╕рдХреЗ рдЖрд░рдВрднреАрдХрд░рдг рдХреА рдЬрд╛рдВрдЪ рдХреА, рдЬреЛ рдПрдХ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ (CGRectMake) рдирд╛рдордХ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдкрд╛рд░рд┐рдд рдХрд░рдиреЗ рд╕реЗ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИред рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ рдкрд╣рд▓реЗ рд▓рд┐рдЦрд╛ рдерд╛, рдпрд╣ рдлрд╝рдВрдХреНрд╢рди рд╕реНрдерд┐рддрд┐ рдФрд░ рдЖрдХрд╛рд░ рджреЗрддрд╛ рд╣реИред
CGRectMake(0, 0, 50, 50).
рдЗрд╕рдореЗрдВ, рдкрд╣рд▓реЗ рджреЛ рдкреИрд░рд╛рдореАрдЯрд░ рдХреНрд░рдорд╢рдГ рдЕрдкрдиреА рдореВрд▓ рд╕реНрдерд┐рддрд┐ (x, y), рдФрд░ рд╢реЗрд╖ рдЪреМрдбрд╝рд╛рдИ рдФрд░ рд▓рдВрдмрд╛рдИ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВред
рдпрджрд┐ рдЪреМрдбрд╝рд╛рдИ рдФрд░ рд▓рдВрдмрд╛рдИ рд╕реНрдкрд╖реНрдЯ рд╣реИ, рддреЛ рдореВрд▓ рдХреЗ рд╕рд╛рде рдереЛрдбрд╝рд╛ рдореИрд▓рд╛ рд╣реИред рддрдереНрдп рдпрд╣ рд╣реИ рдХрд┐ рдЯрд╛рдЗрдк SKShapeNode рдХреА рд╡рд╕реНрддреБрдПрдВ SKSpriteNode рдЯрд╛рдЗрдк рдХреА рд╡рд╕реНрддреБрдУрдВ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рд╕реНрдерд┐рддрд┐ рдХреА рдЧрдгрдирд╛ рдереЛрдбрд╝рд╛ рдЕрд▓рдЧ рддрд░реАрдХреЗ рд╕реЗ рдХрд░рддреА рд╣реИрдВ рдЬрд┐рд╕рдореЗрдВ рд╕реНрдерд┐рддрд┐ рдХреЛ рдмреАрдЪ рд╕реЗ рдЧрд┐рдирд╛ рдЬрд╛рддрд╛ рд╣реИред рдЖрдЗрдП рдКрдкрд░ рджреА рдЧрдИ рдЫрд╡рд┐ рдХреЛ рджреЗрдЦреЗрдВ: рдЗрд╕рд▓рд┐рдП, рдЬрдм рдХреНрд╡рд╛рдб рдирд╛рдо рдХреЗ рд╕рд╛рде рдЕрдкрдиреА рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝ рдХрд░рддреЗ рд╣реБрдП , рд╣рдордиреЗ CGRectMake (0, 0, 50, 50) рдлрдВрдХреНрд╢рди рдХреЛ рдЗрд╕рдХреЗ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдкрд╛рд╕ рдХрд┐рдпрд╛ ред рдЬреИрд╕рд╛ рдХрд┐ рд╣рдо рдЫрд╡рд┐ рдореЗрдВ рджреЗрдЦрддреЗ рд╣реИрдВ, рдЙрддреНрдкрддреНрддрд┐ (0, 0) рд╣реИред рдЫрд╡рд┐ рд╕реЗ рдпрд╣ рджреЗрдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рд╕реНрдерд┐рддрд┐ рдКрдкрд░реА рдмрд╛рдПрдВ рдХреЛрдиреЗ рд╕реЗ рд╢реБрд░реВ рд╣реЛрддреА рд╣реИред
рдЕрдм рд╣рдо рдЕрдкрдиреЗ рдореВрд▓ рдХреЛ рдмрджрд▓рддреЗ рд╣реИрдВ рдФрд░ рдЕрдкрдиреЗ рдкреВрд░реНрд╡ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╡рд┐рднрд┐рдиреНрди рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдХреЗ рд╕рд╛рдеред
CGRectMake(-25, -25, 50, 50).
рдФрд░ рд╣рдо рдХреНрдпрд╛ рджреЗрдЦрддреЗ рд╣реИрдВ? рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝реЗрд╢рди рдХреЗ рд╣рдорд╛рд░реЗ рд╡рд░реНрдЧ рдореЗрдВ рдмреАрдЪ рд╕реЗ рд╕рдВрджрд░реНрдн рд╕реНрдерд┐рддрд┐ рдХрд╛ рдПрдХ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдмрд┐рдВрджреБ рд╣реИред
рджреВрд╕рд░реЗ рд╢рдмреНрджреЛрдВ рдореЗрдВ, рд╣рдорд╛рд░реА рд╡рд╕реНрддреБ рдореЗрдВ рдЕрдм SKSpriteNode рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдХреЗ рд╕рдорд╛рди рд╕рдВрджрд░реНрдн рдкреНрд░рдгрд╛рд▓реА рд╣реИ , рдЬрд┐рд╕рдореЗрдВ рд╕реНрдерд┐рддрд┐ рдХреЛ рдмреАрдЪ рд╕реЗ рдЧрд┐рдирд╛ рдЬрд╛рддрд╛ рд╣реИред
тАв рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рд╣реИ рдХрд┐ рдореВрд▓ рдПрдХ рдПрдВрдХрд░ рдХреА рднреВрдорд┐рдХрд╛ рдирд┐рднрд╛рддрд╛ рд╣реИ рдЬреЛ рдЙрд╕ рдкреНрд░рдХрд╛рд░ рдХреЗ рд╕рдорд╛рди рд╣реИ рдЬрд┐рд╕реЗ рд╣рдордиреЗ рдкрд╣рд▓реЗ SKSprindNode рдкреНрд░рдХрд╛рд░ рдХреА рд╡рд╕реНрддреБрдУрдВ рдХреЗ рд╕рд╛рде рджреЗрдЦрд╛ рдерд╛ ред
рдЖрдкрдХреЗ рдкрд╛рд╕ рдПрдХ рдкреНрд░рд╢реНрди рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐, рдореИрдВрдиреЗ рдореВрд▓ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ (-25, -25) рдХреЗ рдмрд░рд╛рдмрд░ рдХреНрдпреЛрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд┐рдпрд╛?
тАв рддрдереНрдп рдпрд╣ рд╣реИ рдХрд┐ рд╣рдорд╛рд░реЗ рд╡рд░реНрдЧ рдХрд╛ рдЖрдХрд╛рд░ (50, 50) рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдЗрд╕рдХрд╛ рдордзреНрдп рдмрд┐рдВрджреБ (50/2, 50/2) рд╣реИ, рдпрд╛рдиреА рдЖрдзреА рдЪреМрдбрд╝рд╛рдИ рдФрд░ рд▓рдВрдмрд╛рдИ!
рдкрд╣рд▓реА рдЫрд╡рд┐ рдореЗрдВ рд╣рдо рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ рдЯрд╛рдЗрдк рдХреА рд╡рд╕реНрддреБрдПрдБ SKShapeNodeрдкреНрд░рд╛рд░рдВрднрд┐рдХ рдмрд┐рдВрджреБ (0, 0) рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЗрд╕рдХреА рд╕реНрдерд┐рддрд┐ рдКрдкрд░реА рдмрд╛рдПрдВ рдХреЛрдиреЗ рд╕реЗ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рд╣реЛрддреА рд╣реИ,
рд▓реЗрдХрд┐рди рдЕрдЧрд░ рд╣рдо рдЗрд╕реЗ (-25, -25) рд╕реЗ рдЖрдЧреЗ рдмрдврд╝рд╛рддреЗ рд╣реИрдВ, рддреЛ рдЗрд╕рдХрд╛ рд╢реБрд░реБрдЖрддреА рдмрд┐рдВрджреБ рдордзреНрдп рдореЗрдВ рд╣реЛрдЧрд╛ рдФрд░ рд╕реНрдерд┐рддрд┐ рдордзреНрдп рдореЗрдВ рдЧрд┐рдирд╛ рдЬрд╛рдПрдЧрд╛ред
тАв рдЕрдм рдЕрдЧрд░ рд╡реЗ рдХрд╣рддреЗ рд╣реИрдВ рдХрд┐ рд╣рдордиреЗ рдРрд╕рд╛ рд╕реНрдкреНрд░рд╛рдЗрдЯ 100px рд╕реЗ рдЖрдЧреЗ рдмрдврд╝рд╛рдпрд╛ рд╣реИ, рддреЛ рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рд╣рдордиреЗ рдЗрд╕рдХреЗ рдорд┐рдб рдкреЙрдЗрдВрдЯ рдХреЛ 100px рд╕реЗ рдмрджрд▓ рджрд┐рдпрд╛ рд╣реИред
рдЦреИрд░, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдкрдХреЛ SKShapeNode рдкрд╕рдВрдж рдЖрдпрд╛ ред рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦрддреЗ рд╣реИрдВ, рдЗрд╕рдореЗрдВ рдХреБрдЫ рднреА рдореБрд╢реНрдХрд┐рд▓ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдЖрдкрдиреЗ рдХреБрдЫ рдмрд┐рдВрджреБрдУрдВ рдХреЛ рдирд╣реАрдВ рд╕рдордЭрд╛ рд╣реИ, рддреЛ рдпрд╣ рдбрд░рд╛рд╡рдирд╛ рдирд╣реАрдВ рд╣реИ, рдлрд┐рд░ рднреМрддрд┐рдХреА рдХреЗ рдкреНрд░рджрд░реНрд╢рди рдХреЗ рджреМрд░рд╛рди рдЖрдк рд╕рдм рдХреБрдЫ рд╕рдордЭ рдЬрд╛рдПрдВрдЧреЗред рдПрдХ рддреНрд╡рд░рд┐рдд рдЯрд┐рдк: рдЗрд╕ рд╕реНрдкреНрд░рд╛рдЗрдЯ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рдмреЗрд╣рддрд░ рдврдВрдЧ рд╕реЗ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП, UIBezierPath рдкрд░ рдмреЗрд╣рддрд░ рдЕрдзреНрдпрдпрди рдХрд░реЗрдВ рдФрд░ рд╣рд░ рд╕рдордп рдЕрднреНрдпрд╛рд╕ рдХрд░реЗрдВ!
рдСрдмреНрдЬреЗрдХреНрдЯрд┐рд╡-рд╕реА
рдСрдмреНрдЬреЗрдХреНрдЯрд┐рд╡-рд╕реА
#import "GameScene.h" @implementation GameScene -(void)didMoveToView:(SKView *)view { [self SceneSetting]; //[self SKSpriteNodeDemo]; [self SKShapeNodeDemo]; } -(void)SceneSetting { self.backgroundColor = [SKColor orangeColor]; } -(void)SKSpriteNodeDemo { SKTexture *Texture = [SKTexture textureWithImageNamed:@"desert_BG"]; SKSpriteNode *BackgroundSprite = [SKSpriteNode spriteNodeWithTexture:Texture]; BackgroundSprite.size = CGSizeMake(640, 320); BackgroundSprite.position = CGPointMake(0, 0); BackgroundSprite.anchorPoint = CGPointMake(0, 0); BackgroundSprite.name = @"BackgroundSprite"; [self addChild:BackgroundSprite]; SKSpriteNode *SimpleSprite = [SKSpriteNode spriteNodeWithColor:[UIColor blueColor] size:CGSizeMake(50, 50)]; SimpleSprite.position = CGPointMake(200, 150); SimpleSprite.zPosition = 1; SimpleSprite.name = @"SimpleSprite"; [self addChild:SimpleSprite]; SKSpriteNode *ImageSprite = [SKSpriteNode spriteNodeWithImageNamed:@"DerevoOpora"]; ImageSprite.position = CGPointMake(250, 50); ImageSprite.size = CGSizeMake(100, 15); ImageSprite.name = @"ImageSprite"; [self addChild:ImageSprite]; } -(void)SKShapeNodeDemo { SKShapeNode *Circle = [SKShapeNode shapeNodeWithCircleOfRadius:20]; Circle.position = CGPointMake(50, 200); Circle.lineWidth = 10; Circle.strokeColor = [SKColor blueColor]; Circle.fillColor = [SKColor redColor]; Circle.name = @"Circle"; [self addChild:Circle]; SKShapeNode *Quad = [SKShapeNode shapeNodeWithRect:CGRectMake(0, 0, 50, 50)]; Quad.position = CGPointMake(100, 200); Quad.lineWidth = 4; Quad.strokeColor = [SKColor whiteColor]; Quad.fillColor = [SKColor blackColor]; Quad.name = @"Quad"; [self addChild:Quad]; SKShapeNode *Ellips = [SKShapeNode shapeNodeWithEllipseInRect:CGRectMake(0, 0, 50, 90)]; Ellips.position = CGPointMake(200, 200); Ellips.lineWidth = 2; Ellips.strokeColor = [SKColor greenColor]; Ellips.fillColor = [SKColor purpleColor]; Ellips.glowWidth = 5; Ellips.name = @"Ellips"; [self addChild:Ellips]; UIBezierPath *RoundedRectPath = [UIBezierPath bezierPathWithRoundedRect:CGRectMake(0, 0, 50, 50) cornerRadius:12]; SKShapeNode *RoundedRect = [ SKShapeNode shapeNodeWithPath:RoundedRectPath.CGPath centered:YES]; RoundedRect.position = CGPointMake(50, 100); RoundedRect.lineWidth = 2; RoundedRect.strokeColor = [SKColor blueColor]; RoundedRect.fillColor = [SKColor redColor]; RoundedRect.name = @"RoundedRect"; [self addChild:RoundedRect]; UIBezierPath *TrianglePath = [UIBezierPath bezierPath]; [TrianglePath moveToPoint:CGPointMake(0, 0)]; [TrianglePath addLineToPoint:CGPointMake(-25, -50)]; [TrianglePath addLineToPoint:CGPointMake(25, -50)]; [TrianglePath addLineToPoint:CGPointMake(0, 0)]; SKShapeNode *Triangle = [SKShapeNode shapeNodeWithPath:TrianglePath.CGPath centered:YES]; Triangle.position = CGPointMake(200, 70); Triangle.lineWidth = 2; Triangle.strokeColor = [SKColor blackColor]; Triangle.fillColor = [SKColor blueColor]; Triangle.name = @"Triangle"; [self addChild:Triangle]; } @end
рддреАрд╡реНрд░
рддреАрд╡реНрд░
import SpriteKit class GameScene: SKScene { override func didMoveToView(view: SKView) { SceneSetting() //SKSpriteNodeDemo() SKShapeNodeDemo() } func SceneSetting() { self.backgroundColor = SKColor.orangeColor() } func SKSpriteNodeDemo() { var Texture = SKTexture(imageNamed: "desert_BG") var BackgroundSprite = SKSpriteNode(texture: Texture) BackgroundSprite.size = CGSizeMake(640, 320) BackgroundSprite.position = CGPointMake(0, 0) BackgroundSprite.anchorPoint = CGPointMake(0, 0) BackgroundSprite.name = "BackgroundSprite" self.addChild(BackgroundSprite) var SimpleSprite = SKSpriteNode(color: UIColor.blueColor(), size: CGSizeMake(50, 50)) SimpleSprite.position = CGPointMake(200, 150) SimpleSprite.zPosition = 1; SimpleSprite.name = "SimpleSprite" self.addChild(SimpleSprite) var ImageSprite = SKSpriteNode(imageNamed: "DerevoOpora") ImageSprite.position = CGPointMake(250, 50) ImageSprite.size = CGSizeMake(100, 15) ImageSprite.name = "ImageSprite" self.addChild(ImageSprite) } func SKShapeNodeDemo() { var Circle = SKShapeNode(circleOfRadius: 20) Circle.position = CGPointMake(50, 200) Circle.lineWidth = 10 Circle.strokeColor = SKColor.blueColor() Circle.fillColor = SKColor.redColor() Circle.name = "Circle" self.addChild(Circle) var Quad = SKShapeNode(rect: CGRectMake(0, 0, 50, 50)) Quad.position = CGPointMake(100, 200) Quad.lineWidth = 4 Quad.strokeColor = SKColor.whiteColor() Quad.fillColor = SKColor.blackColor() Quad.name = "Quad" self.addChild(Quad) var Ellips = SKShapeNode(ellipseInRect: CGRectMake(0, 0, 50, 90)) Ellips.position = CGPointMake(200, 200) Ellips.lineWidth = 2 Ellips.strokeColor = SKColor.greenColor() Ellips.fillColor = SKColor.purpleColor() Ellips.glowWidth = 5 Ellips.name = "Ellips" self.addChild(Ellips) var RoundedRectPath = UIBezierPath(roundedRect: CGRectMake(0, 0, 50, 50), cornerRadius: 12) var RoundedRect = SKShapeNode(path: RoundedRectPath.CGPath, centered:true) RoundedRect.position = CGPointMake(50, 100) RoundedRect.lineWidth = 2 RoundedRect.strokeColor = SKColor.blueColor() RoundedRect.fillColor = SKColor.redColor() RoundedRect.name = "RoundedRect" self.addChild(RoundedRect) var TrianglePath = UIBezierPath() TrianglePath.moveToPoint(CGPointMake(0, 0)) TrianglePath.addLineToPoint(CGPointMake(-25, -50)) TrianglePath.addLineToPoint(CGPointMake(25, -50)) TrianglePath.addLineToPoint(CGPointMake(0, 0)) var Triangle = SKShapeNode(path: TrianglePath.CGPath, centered: true) Triangle.position = CGPointMake(200, 70) Triangle.lineWidth = 2 Triangle.strokeColor = SKColor.blackColor() Triangle.fillColor = SKColor.blueColor() Triangle.name = "Triangle" self.addChild(Triangle) } }
SKLabelNode
SKLabelNode - рдпрд╣ рдПрдХ рдкреНрд░реЗрдд рд╣реИ рдЬреЛ рдЖрдкрдХреЛ рд╣рдорд╛рд░реЗ рджреГрд╢реНрдп рдкрд░ рдкрд╛рда рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдкрд╛рда рдХреЛ рдирд┐рдореНрди рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рд╕рд╛рде рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:
рдлрд╝реЙрдиреНрдЯ рдЖрдХрд╛рд░, рдлрд╝реЙрдиреНрдЯ рд░рдВрдЧ, рдлрд╝реЙрдиреНрдЯ рдирд╛рдоред
рдлрд╝реЙрдиреНрдЯ рд╕рдВрд░реЗрдЦрдг рдХреЛ рд▓рдВрдмрд╡рдд рдФрд░ рдХреНрд╖реИрддрд┐рдЬ рд░реВрдк рд╕реЗ рд╕рдорд╛рдпреЛрдЬрд┐рдд рдХрд░реЗрдВред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдЕрдм рдЖрдк рдЕрдкрдиреЗ рд▓рд┐рдП рд╕рдм рдХреБрдЫ рджреЗрдЦреЗрдВрдЧреЗред
рдСрдмреНрдЬреЗрдХреНрдЯрд┐рд╡-рд╕реА
рдЙрджреНрджреЗрд╢реНрдп рд╕реА
-(void)SKLabelNodeDemo { // SKLabelNode . . SKLabelNode *First = [SKLabelNode labelNodeWithFontNamed:@"Chalkduster"]; First.position = CGPointMake(280, 200); // . First.fontSize = 25; // . First.fontColor = [SKColor whiteColor]; // . First.color = [SKColor blueColor]; // ( colorBlendFactor). First.colorBlendFactor = 0.5; // colorBlendFactor (0.0 - 1.0) First.text = @"Habra Habr!"; // . First.horizontalAlignmentMode = SKLabelHorizontalAlignmentModeCenter; // . First.name = @"First"; // [self addChild:First]; // . // SKLabelNode . . SKLabelNode *Second = [SKLabelNode labelNodeWithText:@"----"]; Second.fontName = @"Chalkboard SE Bold"; // . Second.fontColor = [SKColor blackColor]; // . Second.position = CGPointMake(280, 50); // . Second.fontSize = 20; // . Second.name = @"Second"; // [self addChild:Second]; // . }
рддреАрд╡реНрд░
рддреАрд╡реНрд░
func SKLabelNodeDemo() { // First SKLabelNode. . var First = SKLabelNode(fontNamed: "Chalkduster") First.position = CGPointMake(280, 200) // . First.fontSize = 25; // . First.fontColor = SKColor.whiteColor() // . First.color = SKColor.blueColor() // ( colorBlendFactor). First.colorBlendFactor = 0.5 // colorBlendFactor (0.0 - 1.0) First.text = "Habra Habr!" // . First.horizontalAlignmentMode = SKLabelHorizontalAlignmentMode.Center // . First.name = "First" // self.addChild(First) // . // Second SKLabelNode. . var Second = SKLabelNode(text: "----") Second.fontName = "Chalkboard SE Bold" // . Second.fontColor = SKColor.blackColor() // . Second.position = CGPointMake(280, 50) // . Second.fontSize = 20 // . Second.name = "Second" // self.addChild(Second) // . }
рдКрдкрд░ рдХреА рдЫрд╡рд┐ рдореЗрдВ рд╣рдо 2 рд╕реНрдкреНрд░рд╛рдЗрдЯ рджреЗрдЦрддреЗ рд╣реИрдВред рдЖрдЗрдП рд╢реБрд░реБрдЖрдд рдХрд░рддреЗ рд╣реИрдВ рдЙрдирдХреЗ рдмрдирд╛рдиреЗ рдХреЗ рддрд░реАрдХреЛрдВ рдХреЛ рджреЗрдЦрдХрд░ред
рдкрд╣рд▓рд╛ рд╕реНрдкреНрд░рд╛рдЗрдЯ рдирд╛рдо рдХрд╛ рдкрд╣рд▓рд╛ ред рдЬрдм рдЗрд╕реЗ рдкреНрд░рд╛рд░рдВрдн рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рд╣рдо рдПрдХ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдлрд╝реЙрдиреНрдЯ рдХрд╛ рдирд╛рдо рдкрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВред SKLabelNode рдкреНрд░рдХрд╛рд░ рд╕реНрдкреНрд░рд╛рдЗрдЯ рд▓рдЧрднрдЧ рд╕рднреА рдкреНрд░рдореБрдЦ рдлреЛрдВрдЯ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдореИрдВ рдЪреЙрдХрдбрд╕реНрдЯрд░ рдирд╛рдо рдХрд╛ рдПрдХ рдлрд╝реЙрдиреНрдЯ рдкрд╛рд╕ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ ред рдЕрдЧрд▓рд╛, рд╣рдо рд╕рднреА рдореВрд▓рднреВрдд рдЧреБрдгреЛрдВ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рддреЗ рд╣реИрдВ:
тАв fontSize тАФ . .
тАв fontColor тАФ . тАв color тАФ ( colorBlendFactor). тАв colorBlendFactor тАФ . color . (0.0 тАФ 1.0). тАв text тАФ . тАв horizontalAlignmentMode тАФ . , . |
рдЗрди рдЧреБрдгреЛрдВ рдХреЛ рд╕реЗрдЯ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рд╣рдо рдЕрдкрдиреЗ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рдЕрдкрдиреЗ рд╕реАрди рдореЗрдВ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВред рдЖрдк рдКрдкрд░ рдХреА рдЫрд╡рд┐ рдореЗрдВ рдкрд░рд┐рдгрд╛рдо рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВред
рджреВрд╕рд░реА рд╡рд╕реНрддреБ рдХрд╛ рдирд╛рдо рджреВрд╕рд░рд╛ рд╣реИ ред рдЬрдм рдЗрд╕реЗ рдкреНрд░рд╛рд░рдВрдн рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рд╣рдо рдЙрд╕ рдкрд╛рда рдХреЛ рдкрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВ рдЬрд┐рд╕реЗ рд╣рдо рдПрдХ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдФрд░ рдЙрд╕рдХреЗ рдмрд╛рдж рд╣рдо рдЕрдиреНрдп рд╕рднреА рдЧреБрдгреЛрдВ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рддреЗ рд╣реИрдВред рдЖрдк рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЗрд╕рдХреЗ рдореВрд▓ рдЧреБрдгреЛрдВ рдХреЛ рдЬрд╛рдирддреЗ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рд╡реЗ рдкрд┐рдЫрд▓реЗ рд╕реНрдкреНрд░рд╛рдЗрдЯ рдХреЗ рд▓рдЧрднрдЧ рд╕рдорд╛рди рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рд╣рдо рд╕рдордп рдирд╣реАрдВ рдЧрдВрд╡рд╛рдПрдВрдЧреЗ рдФрд░ рдЖрдЧреЗ рдмрдврд╝реЗрдВрдЧреЗред
рдСрдмреНрдЬреЗрдХреНрдЯрд┐рд╡-рд╕реА
рдСрдмреНрдЬреЗрдХреНрдЯрд┐рд╡-рд╕реА
#import "GameScene.h" @implementation GameScene -(void)didMoveToView:(SKView *)view { [self SceneSetting]; //[self SKSpriteNodeDemo]; //[self SKShapeNodeDemo]; [self SKLabelNodeDemo]; } -(void)SceneSetting { self.backgroundColor = [SKColor orangeColor]; } -(void)SKSpriteNodeDemo { SKTexture *Texture = [SKTexture textureWithImageNamed:@"desert_BG"]; SKSpriteNode *BackgroundSprite = [SKSpriteNode spriteNodeWithTexture:Texture]; BackgroundSprite.size = CGSizeMake(640, 320); BackgroundSprite.position = CGPointMake(0, 0); BackgroundSprite.anchorPoint = CGPointMake(0, 0); BackgroundSprite.name = @"BackgroundSprite"; [self addChild:BackgroundSprite]; SKSpriteNode *SimpleSprite = [SKSpriteNode spriteNodeWithColor:[UIColor blueColor] size:CGSizeMake(50, 50)]; SimpleSprite.position = CGPointMake(200, 150); SimpleSprite.zPosition = 1; SimpleSprite.name = @"SimpleSprite"; [self addChild:SimpleSprite]; SKSpriteNode *ImageSprite = [SKSpriteNode spriteNodeWithImageNamed:@"DerevoOpora"]; ImageSprite.position = CGPointMake(250, 50); ImageSprite.size = CGSizeMake(100, 15); ImageSprite.name = @"ImageSprite"; [self addChild:ImageSprite]; } -(void)SKShapeNodeDemo { SKShapeNode *Circle = [SKShapeNode shapeNodeWithCircleOfRadius:20]; Circle.position = CGPointMake(50, 200); Circle.lineWidth = 10; Circle.strokeColor = [SKColor blueColor]; Circle.fillColor = [SKColor redColor]; Circle.name = @"Circle"; [self addChild:Circle]; SKShapeNode *Quad = [SKShapeNode shapeNodeWithRect:CGRectMake(0, 0, 50, 50)]; Quad.position = CGPointMake(100, 200); Quad.lineWidth = 4; Quad.strokeColor = [SKColor whiteColor]; Quad.fillColor = [SKColor blackColor]; Quad.name = @"Quad"; [self addChild:Quad]; SKShapeNode *Ellips = [SKShapeNode shapeNodeWithEllipseInRect:CGRectMake(0, 0, 50, 90)]; Ellips.position = CGPointMake(200, 200); Ellips.lineWidth = 2; Ellips.strokeColor = [SKColor greenColor]; Ellips.fillColor = [SKColor purpleColor]; Ellips.glowWidth = 5; Ellips.name = @"Ellips"; [self addChild:Ellips]; UIBezierPath *RoundedRectPath = [UIBezierPath bezierPathWithRoundedRect:CGRectMake(0, 0, 50, 50) cornerRadius:12]; SKShapeNode *RoundedRect = [ SKShapeNode shapeNodeWithPath:RoundedRectPath.CGPath centered:YES]; RoundedRect.position = CGPointMake(50, 100); RoundedRect.lineWidth = 2; RoundedRect.strokeColor = [SKColor blueColor]; RoundedRect.fillColor = [SKColor redColor]; RoundedRect.name = @"RoundedRect"; [self addChild:RoundedRect]; UIBezierPath *TrianglePath = [UIBezierPath bezierPath]; [TrianglePath moveToPoint:CGPointMake(0,0)]; [TrianglePath addLineToPoint:CGPointMake(-25, -50)]; [TrianglePath addLineToPoint:CGPointMake(25, -50)]; [TrianglePath addLineToPoint:CGPointMake(0, 0)]; SKShapeNode *Triangle = [SKShapeNode shapeNodeWithPath:TrianglePath.CGPath centered:YES]; Triangle.position = CGPointMake(200, 70); Triangle.lineWidth = 2; Triangle.strokeColor = [SKColor blackColor]; Triangle.fillColor = [SKColor blueColor]; Triangle.name = @"Triangle"; [self addChild:Triangle]; } -(void)SKLabelNodeDemo { SKLabelNode *First = [SKLabelNode labelNodeWithFontNamed:@"Chalkduster"]; First.position = CGPointMake(280, 200); First.fontSize = 25; First.fontColor = [SKColor whiteColor]; First.color = [SKColor blueColor]; First.colorBlendFactor = 0.5; First.text = @"Habra Habr!"; First.horizontalAlignmentMode = SKLabelHorizontalAlignmentModeCenter; [self addChild:First]; SKLabelNode *Second = [SKLabelNode labelNodeWithText:@"----"]; Second.fontName = @"Chalkboard SE Bold"; Second.fontColor = [SKColor blackColor]; Second.position = CGPointMake(280, 50); Second.fontSize = 20; [self addChild:Second]; } @end
рддреАрд╡реНрд░
рддреАрд╡реНрд░
import SpriteKit class GameScene: SKScene { override func didMoveToView(view: SKView) { SceneSetting() //SKSpriteNodeDemo() //SKShapeNodeDemo() SKLabelNodeDemo() } func SceneSetting() { self.backgroundColor = SKColor.orangeColor() } func SKSpriteNodeDemo() { var Texture = SKTexture(imageNamed: "desert_BG") var BackgroundSprite = SKSpriteNode(texture: Texture) BackgroundSprite.size = CGSizeMake(640, 320) BackgroundSprite.position = CGPointMake(0, 0) BackgroundSprite.anchorPoint = CGPointMake(0, 0) BackgroundSprite.name = "BackgroundSprite" self.addChild(BackgroundSprite) var SimpleSprite = SKSpriteNode(color: UIColor.blueColor(), size: CGSizeMake(50, 50)) SimpleSprite.position = CGPointMake(200, 150) SimpleSprite.zPosition = 1; SimpleSprite.name = "SimpleSprite" self.addChild(SimpleSprite) var ImageSprite = SKSpriteNode(imageNamed: "DerevoOpora") ImageSprite.position = CGPointMake(250, 50) ImageSprite.size = CGSizeMake(100, 15) ImageSprite.name = "ImageSprite" self.addChild(ImageSprite) } func SKShapeNodeDemo() { var Circle = SKShapeNode(circleOfRadius: 20) Circle.position = CGPointMake(50, 200) Circle.lineWidth = 10 Circle.strokeColor = SKColor.blueColor() Circle.fillColor = SKColor.redColor() Circle.name = "Circle" self.addChild(Circle) var Quad = SKShapeNode(rect: CGRectMake(0, 0, 50, 50)) Quad.position = CGPointMake(100, 200) Quad.lineWidth = 4 Quad.strokeColor = SKColor.whiteColor() Quad.fillColor = SKColor.blackColor() Quad.name = "Quad" self.addChild(Quad) var Ellips = SKShapeNode(ellipseInRect: CGRectMake(0, 0, 50, 90)) Ellips.position = CGPointMake(200, 200) Ellips.lineWidth = 2 Ellips.strokeColor = SKColor.greenColor() Ellips.fillColor = SKColor.purpleColor() Ellips.glowWidth = 5 Ellips.name = "Ellips" self.addChild(Ellips) var RoundedRectPath = UIBezierPath(roundedRect: CGRectMake(0, 0, 50, 50), cornerRadius: 12) var RoundedRect = SKShapeNode(path: RoundedRectPath.CGPath, centered:true) RoundedRect.position = CGPointMake(50, 100) RoundedRect.lineWidth = 2 RoundedRect.strokeColor = SKColor.blueColor() RoundedRect.fillColor = SKColor.redColor() RoundedRect.name = "RoundedRect" self.addChild(RoundedRect) var TrianglePath = UIBezierPath() TrianglePath.moveToPoint(CGPointMake(0, 0)) TrianglePath.addLineToPoint(CGPointMake(-25, -50)) TrianglePath.addLineToPoint(CGPointMake(25, -50)) TrianglePath.addLineToPoint(CGPointMake(0, 0)) var Triangle = SKShapeNode(path: TrianglePath.CGPath, centered: true) Triangle.position = CGPointMake(200, 70) Triangle.lineWidth = 2 Triangle.strokeColor = SKColor.blackColor() Triangle.fillColor = SKColor.blueColor() Triangle.name = "Triangle" self.addChild(Triangle) } func SKLabelNodeDemo() { var First = SKLabelNode(fontNamed: "Chalkduster") First.position = CGPointMake(280, 200) First.fontSize = 25; First.fontColor = SKColor.whiteColor() First.color = SKColor.blueColor() First.colorBlendFactor = 0.5 First.text = "Habra Habr!" First.horizontalAlignmentMode = SKLabelHorizontalAlignmentMode.Center self.addChild(First) var Second = SKLabelNode(text: "----") Second.fontName = "Chalkboard SE Bold" Second.fontColor = SKColor.blackColor() Second.position = CGPointMake(280, 50) Second.fontSize = 20 self.addChild(Second) } }
рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, SKLabelNode рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдмрд╣реБрдд рдЖрд╕рд╛рди рд╣реИ, рдореИрдВ рднреА рдмрд╣реБрдд рд╕рд░рд▓ рдХрд╣реВрдВрдЧрд╛!
3 . . , , , : (, , , ).
? |
!
! , тАФ . тАФ . , ! , ! ┬л┬╗ . SKPhysicsBody
SKPhysicsBody
SKPhysicsBody - рдпрд╣ рдореВрд▓ рд░реВрдк рд╕реЗ рд╣рдорд╛рд░реА рд╡рд╕реНрддреБ рдХрд╛ рдкрд┐рдВрдб рд╣реИред рдпрд╣ рд╡рд╣ рд╣реИ рдЬреЛ рд╣рдорд╛рд░реА рд╡рд╕реНрддреБрдУрдВ рдХреА рд╕рднреА рдмреБрдирд┐рдпрд╛рджреА рднреМрддрд┐рдХ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реИ, рдпрд╣ рд╡рд╣ рд╣реИ рдЬреЛ рдЙрдиреНрд╣реЗрдВ рднреМрддрд┐рдХ рд░реВрдк рджреЗрддрд╛ рд╣реИ, рдпрд╣ рд╡рд╣ рд╣реИ рдЬреЛ рдРрд╕реА рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реИ: рдШрд░реНрд╖рдг, рд▓реЛрдЪ, рдкреНрд░рддрд┐рд░реЛрдз, рджреНрд░рд╡реНрдпрдорд╛рди, рдЧрддрд┐, рдЧреБрд░реБрддреНрд╡рд╛рдХрд░реНрд╖рдгред
рдЖрдЗрдП рдЙрд╕реЗ рдФрд░ рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рдЬрд╛рдиреЗрдВ рдФрд░ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЙрд╕рдХреЗ рдЧреБрдгреЛрдВ, рд╡рд┐рдзрд┐рдпреЛрдВ рдпрд╛ рдХрд╛рд░реНрдпреЛрдВ рд╕реЗ рд╢реБрд░реВ рдХрд░реЗрдВред
рд╕рдВрдкрддреНрддрд┐
1) dynamic тАФ No, .
2) usesPreciseCollisionDetection тАФ NO. YES, , , , . 3) allowsRotation тАФ NO. YES ! 4) pinned тАФ NO, YES , , . 5) resting тАФ YES, . 6) friction тАФ , . . 7) charge тАФ . . 8) restitution тАФ ( , ) ( 0.1 тАФ 1.0). 0.2. 9) linearDamping тАФ . ( 0.1 тАФ 1.0). 0.1. 10) angularDamping тАФ . ( 0.1 тАФ 1.0). 0.1. 11) density тАФ . 0.1. 12) mass тАФ . 13) area тАФ . 14) affectedByGravity тАФ YES, NO . 15) fieldBitMask тАФ , 16) categoryBitMask тАФ , . 17) collisionBitMask тАФ , . 18) contactTestBitMask тАФ , 19) joints тАФ , . (Joint тАФ , ) 20) node тАФ Node . 21) velocity тАФ . 22) angularVelocity тАФ . |
1) bodyWithCircleOfRadius тАФ r тАФ .
2) bodyWithCircleOfRadius тАФ r тАФ center тАФ , . 3) bodyWithRectangleOfSize тАФ s тАФ . 4) bodyWithRectangleOfSize тАФ s тАФ center тАФ , . 5) bodyWithPolygonFromPath тАФ path тАФ . 6) bodyWithEdgeFromPoint тАФ p1 тАФ p2 тАФ , . 7) bodyWithEdgeChainFromPath тАФ path тАФ , тАФ . 8) bodyWithEdgeLoopFromPath тАФ path тАФ , . 9) bodyWithEdgeLoopFromRect тАФ rect тАФ , . 10) bodyWithTexture тАФ texture тАФ size тАФ . 11) bodyWithTexture тАФ texture тАФ alphaThreshold тАФ size тАФ , alphaThreshold. 12) bodyWithBodies тАФ bodies тАФ . |
1) applyForce тАФ force тАФ .
2) applyForce тАФ force тАФ point тАФ . ( тАФ ) 3) applyTorque тАФ torque тАФ . 4) applyImpulse тАФ impulse тАФ . 5) applyImpulse тАФ impulse тАФ point тАФ . ( тАФ ) 6) applyAngularImpulse тАФ impulse тАФ . 7) allContactedBodies - рдЗрд╕ рд╢рд░реАрд░ рдХреЗ рд╕рдВрдкрд░реНрдХ рдореЗрдВ рднреМрддрд┐рдХ рдирд┐рдХрд╛рдпреЛрдВ рдХреА рдПрдХ рд╕рд░рдгреА рд▓реМрдЯрд╛рддрд╛ рд╣реИред |
рддреЛ, рдКрдкрд░ рдЖрдк SKPhysicsBody рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рд╕рднреА рддрд░реАрдХреЛрдВ рдпрд╛ рдХрд╛рд░реНрдпреЛрдВ рдФрд░ рдЧреБрдгреЛрдВ рдХреЛ рджреЗрдЦрддреЗ рд╣реИрдВ ред рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рд╡рд╣ рдЙрдирдореЗрдВ рд╕реЗ рдХреБрдЫ рд╣реИред
рдореБрдЭреЗ рддреБрд░рдВрдд рдХрд╣рдирд╛ рд╣реЛрдЧрд╛ рдХрд┐ рдКрдкрд░ рджрд┐рдП рдЧрдП рдХреБрдЫ рдмрд┐рдВрджреБ рдЖрдкрдХреЛ рдкреНрд░рддреАрдд рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ: рд╕рдордЭ рд╕реЗ рдмрд╛рд╣рд░ рд╣реЛрдирд╛ рдпрд╛ рд╕рдордЭрдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реИ ред рдЕрдЧрд░ рдЖрдк рдХреБрдЫ рдирд╣реАрдВ рд╕рдордЭрддреЗ рд╣реИрдВ рддреЛ рдЪрд┐рдВрддрд╛ рди рдХрд░реЗрдВред рдЖрдЧреЗ, рд╣рдо рдХрдИ рдмрд╛рд░ рдХрдИ рдмрд╛рд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВрдЧреЗ рдФрд░ рдкреНрд░рдпреЛрдЧ рдХрд░реЗрдВрдЧреЗ!
рдареАрдХ рд╣реИ, рдЪрд▓реЛ рдЬрд╛рд░реА рд░рдЦреЗрдВ, рд▓реЗрдХрд┐рди рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ рдХрд┐ рд╣рдо рд╢реБрд░реВ рдХрд░реЗрдВ, рд╣рдореЗрдВ рдХреБрдЫ рдХрд░рдирд╛ рд╣реЛрдЧрд╛!
рдЖрдЗрдП, рд╣рдорд╛рд░реЗ ViewController рдХреЛ рдЦреЛрдЬреЗрдВ рдФрд░ рдЗрд╕ рд╕рдВрдкрддреНрддрд┐ рдХреЛ рд╣рдорд╛рд░реЗ SKView :
Objective-c рдореЗрдВ рдЬреЛрдбрд╝реЗрдВ
рддреАрд╡реНрд░
, . , ! |
, SceneSetting
, . .
Objective-c
Swift |
рдирд┐рдХрд╛рдпреЛрдВ рдХреЗ рднреМрддрд┐рдХреА рдХреЛ 3 рд╢реНрд░реЗрдгрд┐рдпреЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:
1) рдЧрддрд┐рд╢реАрд▓ - рдирд┐рдХрд╛рдп рдЬреЛ рдЕрдкрдиреА рд╕реНрдерд┐рддрд┐ рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВред
2) рд╕реНрдЯреЗрдЯрд┐рдХ - рдирд┐рдХрд╛рдп рдЬреЛ рдЕрдкрдиреА рд╕реНрдерд┐рддрд┐ рдирд╣реАрдВ рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВред
3) рдзрд╛рд░ - рдПрдХ рдкреНрд░рдХрд╛рд░ рдХреА рд╕реАрдорд╛ред рдЬрдм рдЖрдк рдордВрдЪ рдкрд░ рдХреБрдЫ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдпрд╛ рдЙрдиреНрд╣реЗрдВ рдПрдХ рд╕рд╛рде рдзрдХреЗрд▓рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рддреЛ
рдЧрддрд┐рд╢реАрд▓
рдЧрддрд┐рд╢реАрд▓ рдирд┐рдХрд╛рдпреЛрдВ рдХрд╛ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ: рдЧреЛрд▓реЗ, рдЙрдбрд╝рдиреЗ рд╡рд╛рд▓реА рд╡рд╕реНрддреБрдПрдВ, рд╕рднреА рд╕рдВрднрд╡ рдПрдирд┐рдореЗрдЯреЗрдб рдЪрд░рд┐рддреНрд░ред рдЙрдирдХреЗ рдкрд╛рд╕ рджреНрд░рд╡реНрдпрдорд╛рди рдФрд░ рдорд╛рддреНрд░рд╛ рд╣реИ, рд╡реЗ рдЧреБрд░реБрддреНрд╡рд╛рдХрд░реНрд╖рдг рдмрд▓реЛрдВ рд╕реЗ рдкреНрд░рднрд╛рд╡рд┐рдд рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рдмреБрдирд┐рдпрд╛рджреА рднреМрддрд┐рдХ рдЧреБрдгреЛрдВ рдХреЛ рд▓реЗ рд╕рдХрддреЗ рд╣реИрдВред
рд╕реНрдерд┐рд░
рд╕реНрдереИрддрд┐рдХ рд╢рд░реАрд░ред рдЙрди рд╕рднреА рдХреЗ рдкрд╛рд╕ рдЧрддрд┐рд╢реАрд▓ рд▓реЛрдЧреЛрдВ рдХреЗ рд╕рдорд╛рди рд╣реА рд╣реИ, рдореБрдЦреНрдп рдЕрдВрддрд░ рдпрд╣ рд╣реИ рдХрд┐ рд╡реЗ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ! рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЕрдиреНрдп рдСрдмреНрдЬреЗрдХреНрдЯ рдЕрднреА рднреА рдЯрдХрд░рд╛ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЙрдирдХреЗ рд╕рд╛рде рдмрд╛рддрдЪреАрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЙрдирдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдХреБрдЫ рд╕рдорд░реНрдерди рдпрд╛ рджреАрд╡рд╛рд░реЛрдВ рдХреЗ рд▓рд┐рдПред рд╡рд╣ рд╕рдм рдЬреЛ рдмрд╣реБрдд рдЬрдЧрд╣ рд▓реЗрддрд╛ рд╣реИред
EDGE
EDGE рдЕрдирд┐рд╡рд╛рд░реНрдп рд░реВрдк рд╕реЗ рдПрдХ рднреМрддрд┐рдХ рдирд┐рдХрд╛рдп рдирд╣реАрдВ рд╣реИ, рдпреЗ рдХреБрдЫ рд╕реАрдорд╛рдПрдВ рд╣реИрдВ рдЬрд┐рдирдХреЗ рд╕рд╛рде рд╕рднреА рдмрд╛рддрдЪреАрдд рд╣реЛрддреА рд╣реИред рдЙрдирдХреЗ рдкрд╛рд╕ рдХреЛрдИ рджреНрд░рд╡реНрдпрдорд╛рди рдпрд╛ рдЖрдпрддрди рдирд╣реАрдВ рд╣реИ, рдФрд░ рд╡реЗ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ!
EDGE рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рд╕реА рд╡рд╕реНрддреБ рдХреЗ рдЕрдВрджрд░ рдпрд╛ рдХреБрдЫ рдЕрджреГрд╢реНрдп рд╕реАрдорд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдЦреЛрдЦрд▓рд╛ рднрд╛рдЧ рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдЪрд▓реЛ рдКрдкрд░ рдХреА рдЫрд╡рд┐ рджреЗрдЦреЗрдВред рд╣рдо рдкрд╛рдВрдЪ рд╡рд╕реНрддреБрдУрдВ рдХреЛ рджреЗрдЦрддреЗ рд╣реИрдВред рдореИрдВрдиреЗ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рд╡рд┐рднрд┐рдиреНрди рдкреНрд░рдХрд╛рд░ рдХреА рд╡рд╕реНрддреБрдУрдВ рдХреЛ рдЪреБрдирд╛ рддрд╛рдХрд┐ рдЖрдк рдЙрдирдХреЗ рдмреАрдЪ рдЕрдВрддрд░ рджреЗрдЦ рд╕рдХреЗрдВред
рдареАрдХ рд╣реИ, рдЪрд▓реЛ рдЙрдиреНрд╣реЗрдВ рдФрд░ рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рджреЗрдЦреЗрдВ!
рдСрдмреНрдЬреЗрдХреНрдЯрд┐рд╡-рд╕реА
рдСрдмреНрдЬреЗрдХреНрдЯрд┐рд╡-рд╕реА
-(void)CreatePhysics { // SKShapeNode . (CGRectMake). SKShapeNode *RectanglePhysics = [SKShapeNode shapeNodeWithRect:CGRectMake(-580/2, -10, 580, 20)]; RectanglePhysics.position = CGPointMake(280, 40); // . RectanglePhysics.fillColor = [SKColor whiteColor]; // . RectanglePhysics.name = @"Rectangle"; // . RectanglePhysics.physicsBody = [SKPhysicsBody bodyWithRectangleOfSize:RectanglePhysics.frame.size]; // . RectanglePhysics.physicsBody.dynamic = NO; // . [self addChild:RectanglePhysics]; // . // SKShapeNode . . SKShapeNode *CirclePhysics = [SKShapeNode shapeNodeWithCircleOfRadius:40]; CirclePhysics.position = CGPointMake(100, 160); // . CirclePhysics.strokeColor = [SKColor greenColor]; // . CirclePhysics.lineWidth = 5; // . CirclePhysics.name = @"Circle"; // . CirclePhysics.physicsBody = [SKPhysicsBody bodyWithCircleOfRadius:40]; // . CirclePhysics.physicsBody.dynamic = YES; // . [self addChild:CirclePhysics]; // . // SKTexture . . SKTexture *Texture = [SKTexture textureWithImageNamed:@"DerevoOpora"]; // SKSpriteNode . SKTexture. SKSpriteNode *TexturePhysics = [SKSpriteNode spriteNodeWithTexture:Texture]; TexturePhysics.position = CGPointMake(200, 180); // . TexturePhysics.size = CGSizeMake(100, 30); // . TexturePhysics.name = @"TexturePhysics"; // . TexturePhysics.physicsBody = [SKPhysicsBody bodyWithRectangleOfSize:TexturePhysics.frame.size]; // . TexturePhysics.physicsBody.dynamic = YES; // // . [self addChild: TexturePhysics]; // . UIBezierPath *TrianglePath = [UIBezierPath bezierPath]; // UIBezierPath. [TrianglePath moveToPoint:CGPointMake(0,0)]; // . [TrianglePath addLineToPoint:CGPointMake(-50, -100)]; // . [TrianglePath addLineToPoint:CGPointMake(50, -100)]; // . [TrianglePath addLineToPoint:CGPointMake(0, 0)]; // . // SKShapeNode . . // , CGPath. SKShapeNode *TrianglePhysics = [SKShapeNode shapeNodeWithPath:TrianglePath.CGPath ]; TrianglePhysics.position = CGPointMake(400, 190); // . TrianglePhysics.lineWidth = 2; // . TrianglePhysics.strokeColor = [SKColor blackColor]; // . TrianglePhysics.fillColor = [SKColor blueColor]; // . TrianglePhysics.name = @"Triangle"; // . TrianglePhysics.physicsBody = [SKPhysicsBody bodyWithPolygonFromPath:TrianglePath.CGPath]; // . TrianglePhysics.physicsBody.dynamic = YES; // . [self addChild:TrianglePhysics]; // . // SKLabelNode . . SKLabelNode *LabelPhysics = [SKLabelNode labelNodeWithText:@"Xcode"]; LabelPhysics.position = CGPointMake(500, 200); // . LabelPhysics.fontSize = 22; // . LabelPhysics.physicsBody = [SKPhysicsBody bodyWithEdgeLoopFromRect:CGRectMake(-25, -25, 50, 50)]; // . LabelPhysics.name = @"Label"; // . [self addChild:LabelPhysics]; // . }
рддреАрд╡реНрд░
рддреАрд╡реНрд░
func CreatePhysics() { // RectanglePhysics SKShapeNode. // (CGRectMake). var RectanglePhysics = SKShapeNode(rect: CGRectMake(-580/2, -10, 580, 20)) RectanglePhysics.position = CGPointMake(280, 40) // . RectanglePhysics.fillColor = SKColor.whiteColor() // . RectanglePhysics.name = "Rectangle" // . RectanglePhysics.physicsBody = SKPhysicsBody(rectangleOfSize: RectanglePhysics.frame.size) // . RectanglePhysics.physicsBody.dynamic = false // . self.addChild(RectanglePhysics) // . // CirclePhysics SKShapeNode. // . var CirclePhysics = SKShapeNode(circleOfRadius: 40) CirclePhysics.position = CGPointMake(100, 160) // . CirclePhysics.strokeColor = SKColor.greenColor() // . CirclePhysics.lineWidth = 5; // . CirclePhysics.name = "Circle" // . CirclePhysics.physicsBody = SKPhysicsBody(circleOfRadius: 40) // . CirclePhysics.physicsBody.dynamic = true // . self.addChild(CirclePhysics) // . // Texture SKTexture. let Texture = SKTexture(imageNamed: "DerevoOpora") // TexturePhysics SKSpriteNode. // SKTexture . var TexturePhysics = SKSpriteNode(texture: Texture) TexturePhysics.position = CGPointMake(200, 180) // . TexturePhysics.size = CGSizeMake(100, 30) // . TexturePhysics.name = "TexturePhysics" // . TexturePhysics.physicsBody = SKPhysicsBody(rectangleOfSize: TexturePhysics.frame.size) // . TexturePhysics.physicsBody.dynamic = true // . self.addChild(TexturePhysics) // . var TrianglePath = UIBezierPath() // UIBezierPath. TrianglePath.moveToPoint(CGPointMake(0, 0)) // . TrianglePath.addLineToPoint(CGPointMake(-50, -100)) // . TrianglePath.addLineToPoint(CGPointMake(50, -100)) // . TrianglePath.addLineToPoint(CGPointMake(0, 0)) // . // TrianglePhysics SKShapeNode. // // , CGPath. var TrianglePhysics = SKShapeNode(path: TrianglePath.CGPath) TrianglePhysics.position = CGPointMake(400, 190) // . TrianglePhysics.lineWidth = 2 // . TrianglePhysics.strokeColor = SKColor.blackColor() // . TrianglePhysics.fillColor = SKColor.blueColor() // . TrianglePhysics.name = "Triangle" // . TrianglePhysics.physicsBody = SKPhysicsBody(polygonFromPath: TrianglePath.CGPath) // . TrianglePhysics.physicsBody.dynamic = true // . self.addChild(TrianglePhysics) // . // LabelPhysics SKLabelNode. . var LabelPhysics = SKLabelNode(text: "Xcode") LabelPhysics.position = CGPointMake(500, 200) // . LabelPhysics.fontSize = 22; // . LabelPhysics.physicsBody = SKPhysicsBody(edgeLoopFromRect: CGRectMake(-25, -25, 50, 50)) // . LabelPhysics.name = "Label" // . self.addChild(LabelPhysics) // . }
RectanglePhysics
рдкрд╣рд▓реА рд╡рд╕реНрддреБ рдХрд╛ рдирд╛рдо RectanglePhysics рд╣реИ ред рдЖрдк рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдЗрд╕рдХреЗ рдореВрд▓ рдЧреБрдг рдХреНрдпрд╛ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдореИрдВ рдЙрди рдкрд░ рдзреНрдпрд╛рди рдирд╣реАрдВ рджреВрдВрдЧрд╛ рдФрд░ рд╕реАрдзреЗ рдирдП рд▓реЛрдЧреЛрдВ рдХреЗ рдкрд╛рд╕ рдЬрд╛рдКрдВрдЧрд╛ред рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдмрд╣реБрдд рд╢реБрд░реБрдЖрдд рдореЗрдВ рд╣рдордЕрдкрдиреА рд╡рд╕реНрддреБрдХреА рднреМрддрд┐рдХ рд╕рдВрдкрддреНрддрд┐ рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд░рддреЗ рд╣реИрдВрдФрд░ рдЗрд╕реЗ SKPhysicsBody рдХреЗ рдкреНрд░рдХрд╛рд░ рдХрд╛ рдПрдХ рдСрдмреНрдЬреЗрдХреНрдЯ рдЕрд╕рд╛рдЗрди рдХрд░рддреЗ рд╣реИрдВред рд╣рдорд╛рд░реЗ рд╕реНрдкреНрд░рд╛рдЗрдЯ рдХреЛ рдПрдХ рднреМрддрд┐рдХ рд╢рд░реАрд░ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╣ рдЖрд╡рд╢реНрдпрдХ рд╣реИред
рдЖрдк рдзреНрдпрд╛рди рд╕реЗ рддрд░реАрдХреЛрдВ рдпрд╛ рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рдЕрдзреНрдпрдпрди рдХрд┐рдпрд╛ рд╣реИ, рддреЛ SKPhysicsBody , рдЬрд┐рд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдореИрдВрдиреЗ рдКрдкрд░ рд▓рд┐рдЦрд╛ рд╣реИ, рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рд╡рд╕реНрддреБ рд╣рдо рдкрд╛рд░рд┐рдд рд░реВрдк рдореЗрдВ рдПрдХ рд╕рдВрдкрддреНрддрд┐ рдХреЗ рд▓рд┐рдП рдПрдХ рдХреЙрд▓ рдХреЗ рд╕рд╛рде рдЖрд░рдВрдн рдирд╣реАрдВ рд╣реЛ рдЬрд╛рддрд╛ bodyWithRectangleOfSize рдпрд╛ рд╕рдорд╛рд░реЛрд╣ rectangleOfSizeрдФрд░ рдЬрдм рдЗрд╕реЗ рдЖрд░рдВрдн рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд╣рдо рдЕрдкрдиреЗ рд╕реНрдкреНрд░рд╛рдЗрдЯ рдХреЗ рдЖрдХрд╛рд░ рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╣рдорд╛рд░реЗ рднреМрддрд┐рдХ рд╢рд░реАрд░ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рд╣реЛрддрд╛ рд╣реИред
рдЙрд▓реНрд▓реЗрдЦ рдХреЗ рд▓рд╛рдпрдХ рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд┐рдВрджреБ рд╣реИ!
рдХреЛрдИ рднреА рд╕реНрдкрд░реНрд╢ рдпрд╛ рд╕рдВрдкрд░реНрдХ рд╕реНрдкреНрд░рд╛рдЗрдЯ рдХреЗ рд╕рд╛рде рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ, рдмрд▓реНрдХрд┐ рдЗрд╕рдХреЗ рднреМрддрд┐рдХ рд╢рд░реАрд░ рдХреЗ рд╕рд╛рде рд╣реЛрддрд╛ рд╣реИ!
рдпрджрд┐ рдЖрдк рд╕реНрдкреНрд░рд╛рдЗрдЯ рд╕реЗ рдЫреЛрдЯреЗ рд╢рд░реАрд░ рдХрд╛ рдЖрдХрд╛рд░ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рдЬрдм рдСрдмреНрдЬреЗрдХреНрдЯ рдЙрд╕ рднрд╛рдЧ рдХреЛ рд╕реНрдкрд░реНрд╢ рдХрд░рддрд╛ рд╣реИ рдЬреЛ рднреМрддрд┐рдХ рд╢рд░реАрд░ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рд╣реИ, рддреЛ рд╡рд╣ рдХрд┐рд╕реА рдЕрдиреНрдп рд╕реНрдкреНрд░рд╛рдЗрдЯ рдореЗрдВ рдкреНрд░рд╡реЗрд╢ рдХрд░реЗрдЧрд╛, рдФрд░ рдпрджрд┐ рдЖрдк рд╕реНрдкреНрд░рд╛рдЗрдЯ рдХреЗ рдЖрдХрд╛рд░ рд╕реЗ рдмрдбрд╝рд╛ рдХреЛрдИ рдмреЙрдбреА рдЖрдХрд╛рд░ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рджрд┐рдЦрд╛рдИ рджреЗрдЧрд╛ рдХрд┐ рд╕реНрдкреНрд░рд╛рдЗрдЯ рд╢реЗрд▓ рд╕реНрд╡рдпрдВ рд╕рдВрдкрд░реНрдХ рдореЗрдВ рдирд╣реАрдВ рд╣реИ , рдФрд░ рдХреБрдЫ рдЕрджреГрд╢реНрдп рд╕реАрдорд╛ред рдиреАрдЪреЗ рдХреА рдЫрд╡рд┐ рдореЗрдВ рдореИрдВрдиреЗ рдЗрди рдорд╛рдорд▓реЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдЙрджрд╛рд╣рд░рдг рджрд┐рдпрд╛ рд╣реИ!
|
рд╣рдорд╛рд░реЗ рднреМрддрд┐рдХ рд╢рд░реАрд░ рдХреА рд╕реНрдерд╛рдкрдирд╛ рдХреЗ рдмрд╛рдж, рд╣рдо рдПрдХ рдФрд░ рд╕рдВрдкрддреНрддрд┐ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рдпрд╣ рдЧрддрд┐рд╢реАрд▓ рд╣реИ ред
рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ рдКрдкрд░ рд▓рд┐рдЦрд╛ рд╣реИ, рдпрд╣ рд╡рд╕реНрддреБрдУрдВ рдХреА рдЧрддрд┐рд╢реАрд▓рддрд╛ рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реИред рдпрд╣рд╛рдВ рд╣рдо рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рдирдХрд╛рд░рд╛рддреНрдордХ рдореВрд▓реНрдп рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдЕрдм рд╣рдорд╛рд░реА рд╡рд╕реНрддреБ рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдирд╣реАрдВ рд╣реЛрдЧрд╛, рдЬреЛ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдПрдХ рд╕рд╣рд╛рдпрдХ рд╕рддрд╣ рдХреЗ рд░реВрдк рдореЗрдВ рдЖрджрд░реНрд╢ рд╣реИ!
CirclePhysics
CirclePhysics . . : SKPhysicsBody bodyWithCircleOfRadius circleOfRadius . dynamic , , . , , !
|
. , .
, : , , ! , , ! |
TexturePhysics
TexturePhysics . , . , , dynamic , ! |
TrianglePhysics
, TrianglePhysics . , UIBezierPath . , SKPhysicsBody . polygonFromPath bodyWithPolygonFromPath . (-) ? UIBezierPath TrianglePath .
! |
LabelPhysics
LabelPhysics . , SKPhysicsBody , bodyWithEdgeLoopFromRect edgeLoopFromRect . рд╡реЗ рдХреНрдпрд╛ рдХрд░ рд░рд╣реЗ рд╣реИрдВ? , (CGRectMake) (EDGE). . , showsPhysics , . , ! EDGE, , . . , . , ; EDGE.
|
рдХреБрдЫ рднреМрддрд┐рдХ рдЧреБрдгреЛрдВ рдХреА рддреБрд▓рдирд╛
рдФрд░ рдЗрд╕рд▓рд┐рдП, рджреЛрд╕реНрддреЛрдВ, рдЖрдкрдиреЗ рдФрд░ рдореИрдВрдиреЗ рд╕реАрдЦрд╛ рдХрд┐ рд╣рдорд╛рд░реА рд╡рд╕реНрддреБрдУрдВ рдХреЗ рд▓рд┐рдП рднреМрддрд┐рдХ рд╢рд░реАрд░ рдХреИрд╕реЗ рдмрдирд╛рдП рдЬрд╛рддреЗ рд╣реИрдВ рдФрд░ рдЕрдм рднреМрддрд┐рдХ рдЧреБрдгреЛрдВ рдХреЛ рджреЗрдЦрдиреЗ рдХрд╛ рд╕рдордп рдЖ рдЧрдпрд╛ рд╣реИред рдиреАрдЪреЗ рджрд┐рдП рдЧрдП рд╡реАрдбрд┐рдпреЛ рдореЗрдВ, рд╣рдо рдХрдИ рднреМрддрд┐рдХ рдЧреБрдгреЛрдВ рдХреА рддреБрд▓рдирд╛ рдХрд░рддреЗ рд╣реИрдВред рдЬреИрд╕рд╛ рдХрд┐ рд╣рдо рд╢реБрд░реБрдЖрдд рдореЗрдВ рджреЗрдЦрддреЗ рд╣реИрдВ, рдПрдХ рд╣реА рдЖрдХрд╛рд░ рдХреА рджреЛ рдЧреЗрдВрджреЗрдВ рдФрд░ рдПрдХ рд╣реА рдКрдВрдЪрд╛рдИ рд╕реЗ рдЧрд┐рд░рддреА рд╣реИрдВред рдЧрд┐рд░рдиреЗ рдкрд░, рдЙрдирдореЗрдВ рд╕реЗ рдПрдХ рдЙрдЫрд▓рддрд╛ рд╣реИ, рдФрд░ рджреВрд╕рд░рд╛ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рд╣рдо рдПрдХ рд╣реА рдЖрдХрд╛рд░ рдХреЗ рджреЛ рд╡рд░реНрдЧ рднреА рджреЗрдЦрддреЗ рд╣реИрдВред рд╡реЗ рд╕рдорд╛рди рдКрдВрдЪрд╛рдИ рд╕реЗ рднреА рдЧрд┐рд░рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдПрдХ рдЭреБрдХреА рд╣реБрдИ рд╕рддрд╣ рдкрд░ред рдЙрдирдореЗрдВ рд╕реЗ рдПрдХ рд╕реНрд▓рд╛рдЗрдб рдФрд░ рдЧрд┐рд░рддрд╛ рд╣реИ, рдЬрдмрдХрд┐ рджреВрд╕рд░рд╛, рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрдд, рддреБрд░рдВрдд рдмрдВрдж рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рд╕рдм рдХреБрдЫ рднреМрддрд┐рдХ рдЧреБрдгреЛрдВ рдХрд╛ рдкреНрд░рджрд░реНрд╢рди рд╣реИред рдмреЗрд╣рддрд░ рдХреЛрдб рдХреЗ рд▓рд┐рдП рд╕реАрдзреЗ рдЬрд╛рдУ!
рдФрд░ рдЗрд╕рд▓рд┐рдП рд╣рдорд╛рд░реЗ рдХреЛрдб рдХреЛ рджреЗрдЦреЗрдВ!
рдСрдмреНрдЬреЗрдХреНрдЯрд┐рд╡-рд╕реА
рдСрдмреНрдЬреЗрдХреНрдЯрд┐рд╡-рд╕реА
-(void)PhysicsProperties { float RotateAngle = 10 * (2 * M_PI)/360; SKShapeNode *Opora1 = [SKShapeNode shapeNodeWithRect:CGRectMake(-150/2, -10, 150, 20)]; Opora1.position = CGPointMake(100, 200); Opora1.strokeColor = [SKColor greenColor]; Opora1.fillColor = [SKColor greenColor]; Opora1.name = @"Opora1"; Opora1.physicsBody = [SKPhysicsBody bodyWithRectangleOfSize:Opora1.frame.size]; Opora1.physicsBody.dynamic = NO; Opora1.zRotation = -RotateAngle; [self addChild:Opora1]; SKShapeNode *Opora2 = [SKShapeNode shapeNodeWithRect:CGRectMake(-150/2, -10, 150, 20)]; Opora2.position = CGPointMake(468, 200); Opora2.strokeColor = [SKColor redColor]; Opora2.fillColor = [SKColor redColor]; Opora2.name = @"Opora2"; Opora2.physicsBody = [SKPhysicsBody bodyWithRectangleOfSize:Opora2.frame.size]; Opora2.physicsBody.dynamic = NO; Opora2.zRotation = RotateAngle; [self addChild:Opora2]; SKShapeNode *Opora3 = [SKShapeNode shapeNodeWithRect:CGRectMake(-568/2, -10, 568, 20)]; Opora3.position = CGPointMake(568/2, 10); Opora3.strokeColor = [SKColor yellowColor]; Opora3.fillColor = [SKColor yellowColor]; Opora3.name = @"Opora3"; Opora3.physicsBody = [SKPhysicsBody bodyWithRectangleOfSize:Opora3.frame.size]; Opora3.physicsBody.dynamic = NO; [self addChild:Opora3]; SKShapeNode *Circle1 = [SKShapeNode shapeNodeWithCircleOfRadius:15]; Circle1.position = CGPointMake(250, 280); Circle1.strokeColor = [SKColor whiteColor]; Circle1.fillColor = [SKColor blackColor]; Circle1.name = @"Circle1"; Circle1.physicsBody = [SKPhysicsBody bodyWithCircleOfRadius:15]; Circle1.physicsBody.restitution = 0; [self addChild:Circle1]; SKShapeNode *Circle2 = [SKShapeNode shapeNodeWithCircleOfRadius:15]; Circle2.position = CGPointMake(310, 280); Circle2.strokeColor = [SKColor whiteColor]; Circle2.fillColor = [SKColor purpleColor]; Circle2.name = @"Circle2"; Circle2.physicsBody = [SKPhysicsBody bodyWithCircleOfRadius:15]; Circle2.physicsBody.restitution = 0.7; [self addChild:Circle2]; SKShapeNode *Quad1 = [SKShapeNode shapeNodeWithRect:CGRectMake(-30/2, -30/2, 30, 30)]; Quad1.position = CGPointMake(50, 320); Quad1.strokeColor = [SKColor whiteColor]; Quad1.fillColor = [SKColor whiteColor]; Quad1.name = @"Quad1"; Quad1.physicsBody = [SKPhysicsBody bodyWithRectangleOfSize:Quad1.frame.size]; Quad1.physicsBody.friction = 1; [self addChild:Quad1]; SKShapeNode *Quad2 = [SKShapeNode shapeNodeWithRect:CGRectMake(-30/2, -30/2, 30, 30)]; Quad2.position = CGPointMake(518, 320); Quad2.strokeColor = [SKColor blackColor]; Quad2.fillColor = [SKColor blackColor]; Quad2.name = @"Quad2"; Quad2.physicsBody = [SKPhysicsBody bodyWithRectangleOfSize:Quad2.frame.size]; Quad2.physicsBody.friction = 0.1; [self addChild:Quad2]; }
рддреАрд╡реНрд░
рддреАрд╡реНрд░
func PhysicsProperties() { let RotateAngle = 10 * (2 * M_PI)/360 var Opora1 = SKShapeNode(rect: CGRectMake(-150/2, -10, 150, 20)) Opora1.position = CGPointMake(100, 200) Opora1.strokeColor = SKColor.greenColor() Opora1.fillColor = SKColor.greenColor() Opora1.name = "Opora1" Opora1.physicsBody = SKPhysicsBody(rectangleOfSize: Opora1.frame.size) Opora1.physicsBody.dynamic = false Opora1.zRotation = Float(-RotateAngle) self.addChild(Opora1) var Opora2 = SKShapeNode(rect: CGRectMake(-150/2, -10, 150, 20)) Opora2.position = CGPointMake(468, 200) Opora2.strokeColor = SKColor.redColor() Opora2.fillColor = SKColor.redColor() Opora2.name = "Opora2" Opora2.physicsBody = SKPhysicsBody(rectangleOfSize: Opora2.frame.size) Opora2.physicsBody.dynamic = false Opora2.zRotation = Float(RotateAngle) self.addChild(Opora2) var Opora3 = SKShapeNode(rect:CGRectMake (-568/2, -10, 568, 20)) Opora3.position = CGPointMake(568/2, 10) Opora3.strokeColor = SKColor.yellowColor() Opora3.fillColor = SKColor.yellowColor() Opora3.name = "Opora3" Opora3.physicsBody = SKPhysicsBody(rectangleOfSize: Opora3.frame.size) Opora3.physicsBody.dynamic = false self.addChild(Opora3) var Circle1 = SKShapeNode(circleOfRadius: 15) Circle1.position = CGPointMake(250, 280) Circle1.strokeColor = SKColor.whiteColor() Circle1.fillColor = SKColor.blackColor() Circle1.name = "Circle1" Circle1.physicsBody = SKPhysicsBody(circleOfRadius: 15) Circle1.physicsBody.restitution = 0 self.addChild(Circle1) var Circle2 = SKShapeNode(circleOfRadius: 15) Circle2.position = CGPointMake(310, 280) Circle2.strokeColor = SKColor.whiteColor() Circle2.fillColor = SKColor.purpleColor() Circle2.name = "Circle2" Circle2.physicsBody = SKPhysicsBody(circleOfRadius: 15) Circle2.physicsBody.restitution = 0.7 self.addChild(Circle2) var Quad1 = SKShapeNode(rect: CGRectMake (-30/2, -30/2, 30, 30)) Quad1.position = CGPointMake(50, 320) Quad1.strokeColor = SKColor.whiteColor() Quad1.fillColor = SKColor.whiteColor() Quad1.name = "Quad1" Quad1.physicsBody = SKPhysicsBody(rectangleOfSize: Quad1.frame.size) Quad1.physicsBody.friction = 1 self.addChild(Quad1) var Quad2 = SKShapeNode(rect: CGRectMake (-30/2, -30/2, 30, 30)) Quad2.position = CGPointMake(518, 320) Quad2.strokeColor = SKColor.blackColor() Quad2.fillColor = SKColor.blackColor() Quad2.name = "Quad2" Quad2.physicsBody = SKPhysicsBody(rectangleOfSize: Quad2.frame.size) Quad2.physicsBody.friction = 0.1 self.addChild(Quad2) }
рдмрд╣реБрдд рд╢реБрд░реБрдЖрдд рдореЗрдВ, рдореИрдВ Opora1 рдФрд░ Opora2 рдирд╛рдо рдХреЗ рд╕рд╛рде SKShapeNode рдЯрд╛рдЗрдк рдХреА рджреЛ рд╡рд╕реНрддреБрдПрдВ рдмрдирд╛рддрд╛ рд╣реВрдВ ред рд╡реАрдбрд┐рдпреЛ рдореЗрдВ, рдпреЗ рдХреНрд░рдорд╢рдГ рд╣рд░реЗ рдФрд░ рд▓рд╛рд▓ рд░рдВрдЧ рд╕реЗ рдЭреБрдХреА рд╣реБрдИ рд╡рд╕реНрддреБрдПрдВ рд╣реИрдВред рдЙрдирдХреЗ рдирд┐рд░реНрдорд╛рдг рдореЗрдВ рдХреБрдЫ рднреА рдЕрд╕рд╛рдорд╛рдиреНрдп рдирд╣реАрдВ рд╣реИ рд╕рд┐рд╡рд╛рдп рдЬрд╝реЛрдЯреЗрд╢рди рдкреНрд░реЙрдкрд░реНрдЯреА рдХреЗ рдЬреЛ рдореИрдВрдиреЗ рдКрдкрд░ рд▓рд┐рдЦрд╛ рдерд╛, рд▓реЗрдХрд┐рди рдЕрднреА рддрдХ рд╣рдордиреЗ рдЗрд╕рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИред рдЬреИрд╕рд╛ рдХрд┐ рд╣рдо рдпрд╛рдж рдХрд░рддреЗ рд╣реИрдВ:
zRotation - рдпреВрд▓рд░ рдХреЗ рдХреЛрдиреЛрдВ рдореЗрдВ рд╣рдорд╛рд░реЗ рдиреЛрдб рдХреЗ рд░реЛрдЯреЗрд╢рди рдХреЛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддрд╛ рд╣реИред |
ZRotation рд╕рдВрдкрддреНрддрд┐ рд░реЗрдбрд┐рдпрди рдореЗрдВ рдЕрдкрдирд╛ рдореВрд▓реНрдп рд▓реЗрддреА рд╣реИ ! рдФрд░ рдЗрд╕рд▓рд┐рдП, рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдХреЛрдг рджреНрд╡рд╛рд░рд╛ рдХрд┐рд╕реА рд╡рд╕реНрддреБ рдХреЛ рдШреБрдорд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рдкрд╣рд▓реЗ рдЗрд╕ рдХреЛрдг рдХреЛ рд░реЗрдбрд┐рдпрдВрд╕ рдореЗрдВ рдмрджрд▓рдирд╛ рд╣реЛрдЧрд╛ред рдпрд╣ рдмрд╣реБрдд рд╕рд░рд▓рддрд╛ рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:
рдСрдмреНрдЬреЗрдХреНрдЯрд┐рд╡-рд╕реА
рд╣рдо RotateAngle рдирд╛рдордХ рдлреНрд▓реЛрдЯ рдХреЗ рдПрдХ рд╡реИрд░рд┐рдПрдмрд▓ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░рддреЗ рд╣реИрдВ
10, . 60 , :
zRotation :
|
Swift
let RotateAngle
Objective-c , float |
рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рд╡рд╕реНрддреБрдУрдВ рдХреЛ рдореЛрдбрд╝рдиреЗ рдореЗрдВ рдХреБрдЫ рднреА рдЬрдЯрд┐рд▓ рдирд╣реАрдВ рд╣реИ!
рдЗрд╕рдХреЗ рдмрд╛рдж, рдореИрдВ Opora3 рдирд╛рдо рдХреЗ рд╕рд╛рде рдПрдХ рдФрд░ рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рддрд╛ рд╣реВрдВ , рдЬреЛ рдмрд╣реБрдд рдиреАрдЪреЗ рдкреАрд▓рд╛ рд╣реИред рдЗрд╕реЗ рдмрдирд╛рдиреЗ рдореЗрдВ рдХреБрдЫ рднреА рдЕрд╕рд╛рдорд╛рдиреНрдп рдирд╣реАрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдо рдЖрдЧреЗ рдмрдврд╝ рд╕рдХрддреЗ рд╣реИрдВред рдФрд░ рдлрд┐рд░, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рджреЛ рдФрд░ рдСрдмреНрдЬреЗрдХреНрдЯ рд╣реИрдВ - рд╕рд░реНрдХрд▓ 1 рдФрд░ рд╕рд░реНрдХрд▓ 2 рдирд╛рдореЛрдВ рдХреЗ рд╕рд╛рде ред рдЙрдирдХреА рд╕рдВрд░рдЪрдирд╛ рдореЗрдВ, рд╡реЗ рдПрдХ-рджреВрд╕рд░реЗ рдХреЗ рд╕рдорд╛рди рд╣реИрдВ, рд▓реЗрдХрд┐рди рднреМрддрд┐рдХ рдЧреБрдгреЛрдВ рдореЗрдВ рдЕрдВрддрд░ рд╣реИрдВред рдЙрдирдХрд╛ рднреМрддрд┐рдХ рд░реВрдк рдмрд┐рд▓реНрдХреБрд▓ рд╕рдорд╛рди рд╣реИ, рд▓реЗрдХрд┐рди рд╕рдВрдкрддреНрддрд┐ рдЕрд▓рдЧ рд╣реИ:
рдирд╛рдо рдХреА рдкреБрдирд░реНрд╕реНрдерд╛рдкрдирд╛ рдХреЗ рд╕рд╛рде рдПрдХ рд╕рдВрдкрддреНрддрд┐ рдЬреИрд╕рд╛ рдХрд┐ рд╣рдо рдпрд╛рдж рдХрд░рддреЗ рд╣реИрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВ:
рдкреБрдирд░реНрд╕реНрдерд╛рдкрди - рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдЯрдХреНрдХрд░ рдореЗрдВ рд╢рд░реАрд░ рдХрд┐рддрдиреА рдКрд░реНрдЬрд╛ рдЦреЛрддрд╛ рд╣реИ (рдЯрдХрд░рд╛рд╡ рдореЗрдВ рд╢рд░реАрд░ рдХрд┐рддрдирд╛ рдЙрдЫрд▓рддрд╛ рд╣реИ)
(0.1 - 1.0 рдХреЗ рдмреАрдЪ рдорд╛рди рд▓реЗрддрд╛ рд╣реИ)ред рдбрд┐рдлрд╝реЙрд▓реНрдЯ 0.2 рд╣реИред |
рдЗрд╕рд▓рд┐рдП, рд╕рд░реНрдХрд▓ 1 рдирд╛рдо рд╡рд╛рд▓реА рд╡рд╕реНрддреБ рдореЗрдВ рдореИрдВрдиреЗ рдЗрд╕рдХрд╛ рдорд╛рди "0" рдкрд░ рд╕реЗрдЯ рдХрд┐рдпрд╛ рд╣реИ , рдФрд░ рд╕рд░реНрдХрд▓ 2 рдирд╛рдо рдХреЗ рд╕рд╛рде рдПрдХ рдЕрдиреНрдп рдСрдмреНрдЬреЗрдХреНрдЯ рдореЗрдВ рдпрд╣ "1" рдорд╛рди рдкрд░ рд╕реЗрдЯ рд╣реИ ред рдЗрд╕ рд╕рдВрдкрддреНрддрд┐ рдХреЗ рдореВрд▓реНрдп рдХреЛ рдмрджрд▓рдиреЗ рд╕реЗ рдЕрдиреНрдп рд╡рд╕реНрддреБрдУрдВ рдХреЗ рд╕рд╛рде рдЯрдХрд░рд╛рд╡ рдореЗрдВ рдХрд┐рд╕реА рд╡рд╕реНрддреБ рдХрд╛ рд╡реНрдпрд╡рд╣рд╛рд░ рдкреНрд░рднрд╛рд╡рд┐рдд рд╣реЛрддрд╛ рд╣реИред рдЬреИрд╕рд╛ рдХрд┐ рд╣рдо рд╡реАрдбрд┐рдпреЛ рдореЗрдВ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рджреЛ рдЧреЗрдВрджреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдЙрдЫрд▓рддрд╛ рд╣реИ рдЬрдм рд╡рд╣ рдЧрд┐рд░рддрд╛ рд╣реИ, рдФрд░ рджреВрд╕рд░рд╛ рд╡рд┐рдкрд░реАрдд рдЧрддрд┐рд╣реАрди рд╣реЛрддрд╛ рд╣реИред рдпрд╣ рд╕рдм рдЗрд╕ рд╕рдВрдкрддреНрддрд┐ рдХреА рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХрд╛ рдкрд░рд┐рдгрд╛рдо рд╣реИред
рдПрдХ рдЕрдиреНрдп рдЙрджрд╛рд╣рд░рдг рд╣рдо Quad1 рдФрд░ Quad2 рдирд╛рдореЛрдВ рдХреЗ рд╕рд╛рде рджреЛ рдЕрдиреНрдп рд╡рд╕реНрддреБрдУрдВ рдореЗрдВ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ ред рд╡реЗ рдЖрдХрд╛рд░ рдореЗрдВ рдЪреМрдХреЛрд░ рд╣реИрдВ рдФрд░ рднреМрддрд┐рдХ рд╕рдВрдкрддреНрддрд┐ рдХреЗ рдирд╛рдо рдШрд░реНрд╖рдг рдХреЗ рдЕрд▓рд╛рд╡рд╛ рд╣рд░ рдЪреАрдЬ рдореЗрдВ рд╕рдорд╛рди рд╣реИрдВ ред
рдШрд░реНрд╖рдг - рд╢рд░реАрд░ рдХреА рд╕рддрд╣ рдХрд╛ рдЦреБрд░рджрд░рд╛рдкрди рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддрд╛ рд╣реИред рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рд╢рд░реАрд░ рдХреЗ рд╕рдВрдкрд░реНрдХ рдореЗрдВ рдШрд░реНрд╖рдг рдмрд▓ рдХреА рдЧрдгрдирд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред |
рдПрдХ рд╡рд╕реНрддреБ рдореЗрдВ рдЗрд╕рдХрд╛ рдорд╛рди "1" рд╣реИ , рджреВрд╕рд░реЗ рдореЗрдВ "0.1" рдФрд░ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк: рдПрдХ рд╡рд░реНрдЧ рд▓рдЧрднрдЧ рд╕рддрд╣ рдкрд░ рдлрд┐рд╕рд▓рддрд╛ рдирд╣реАрдВ рд╣реИ, рдФрд░ рджреВрд╕рд░рд╛, рдкреВрд░реА рд╕рддрд╣ рдХреЛ рдлрд┐рд╕рд▓рдХрд░ рдиреАрдЪреЗ рдЧрд┐рд░ рдЬрд╛рддрд╛ рд╣реИред
рд╣рдорд╛рд░реЗ рдЙрджреНрджреЗрд╢реНрдп-рд╕реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рд▓рд┐рдП рдкреВрд░рд╛ рдХреЛрдб
рдСрдмреНрдЬреЗрдХреНрдЯрд┐рд╡-рд╕реА
#import "GameScene.h" @implementation GameScene -(void)didMoveToView:(SKView *)view { [self SceneSetting]; //[self SKSpriteNodeDemo]; //[self SKShapeNodeDemo]; //[self SKLabelNodeDemo]; //[self CreatePhysics]; [self PhysicsProperties]; } -(void)SceneSetting { self.backgroundColor = [SKColor orangeColor]; self.physicsWorld.gravity = CGVectorMake(0, -1); } -(void)PhysicsProperties { float RotateAngle = 10 * (2 * M_PI)/360; SKShapeNode *Opora1 = [SKShapeNode shapeNodeWithRect:CGRectMake(-150/2, -10, 150, 20)]; Opora1.position = CGPointMake(100, 200); Opora1.strokeColor = [SKColor greenColor]; Opora1.fillColor = [SKColor greenColor]; Opora1.name = @"Opora1"; Opora1.physicsBody = [SKPhysicsBody bodyWithRectangleOfSize:Opora1.frame.size]; Opora1.physicsBody.dynamic = NO; Opora1.zRotation = -RotateAngle; [self addChild:Opora1]; SKShapeNode *Opora2 = [SKShapeNode shapeNodeWithRect:CGRectMake(-150/2, -10, 150, 20)]; Opora2.position = CGPointMake(468, 200); Opora2.strokeColor = [SKColor redColor]; Opora2.fillColor = [SKColor redColor]; Opora2.name = @"Opora2"; Opora2.physicsBody = [SKPhysicsBody bodyWithRectangleOfSize:Opora2.frame.size]; Opora2.physicsBody.dynamic = NO; Opora2.zRotation = RotateAngle; [self addChild:Opora2]; SKShapeNode *Opora3 = [SKShapeNode shapeNodeWithRect:CGRectMake(-568/2, -10, 568, 20)]; Opora3.position = CGPointMake(568/2, 10); Opora3.strokeColor = [SKColor yellowColor]; Opora3.fillColor = [SKColor yellowColor]; Opora3.name = @"Opora3"; Opora3.physicsBody = [SKPhysicsBody bodyWithRectangleOfSize:Opora3.frame.size]; Opora3.physicsBody.dynamic = NO; [self addChild:Opora3]; SKShapeNode *Circle1 = [SKShapeNode shapeNodeWithCircleOfRadius:15]; Circle1.position = CGPointMake(250, 280); Circle1.strokeColor = [SKColor whiteColor]; Circle1.fillColor = [SKColor blackColor]; Circle1.name = @"Circle1"; Circle1.physicsBody = [SKPhysicsBody bodyWithCircleOfRadius:15]; Circle1.physicsBody.restitution = 0; [self addChild:Circle1]; SKShapeNode *Circle2 = [SKShapeNode shapeNodeWithCircleOfRadius:15]; Circle2.position = CGPointMake(310, 280); Circle2.strokeColor = [SKColor whiteColor]; Circle2.fillColor = [SKColor purpleColor]; Circle2.name = @"Circle2"; Circle2.physicsBody = [SKPhysicsBody bodyWithCircleOfRadius:15]; Circle2.physicsBody.restitution = 0.7; [self addChild:Circle2]; SKShapeNode *Quad1 = [SKShapeNode shapeNodeWithRect:CGRectMake(-30/2, -30/2, 30, 30)]; Quad1.position = CGPointMake(50, 320); Quad1.strokeColor = [SKColor whiteColor]; Quad1.fillColor = [SKColor whiteColor]; Quad1.name = @"Quad1"; Quad1.physicsBody = [SKPhysicsBody bodyWithRectangleOfSize:Quad1.frame.size]; Quad1.physicsBody.friction = 1; [self addChild:Quad1]; SKShapeNode *Quad2 = [SKShapeNode shapeNodeWithRect:CGRectMake(-30/2, -30/2, 30, 30)]; Quad2.position = CGPointMake(518, 320); Quad2.strokeColor = [SKColor blackColor]; Quad2.fillColor = [SKColor blackColor]; Quad2.name = @"Quad2"; Quad2.physicsBody = [SKPhysicsBody bodyWithRectangleOfSize:Quad2.frame.size]; Quad2.physicsBody.friction = 0.1; [self addChild:Quad2]; } -(void)CreatePhysics { SKShapeNode *RectanglePhysics = [SKShapeNode shapeNodeWithRect:CGRectMake(-580/2, -10, 580, 20)]; RectanglePhysics.position = CGPointMake(280, 40); RectanglePhysics.fillColor = [SKColor whiteColor]; RectanglePhysics.name = @"Rectangle"; RectanglePhysics.physicsBody = [SKPhysicsBody bodyWithRectangleOfSize:RectanglePhysics.frame.size]; RectanglePhysics.physicsBody.dynamic = NO; [self addChild:RectanglePhysics]; SKShapeNode *CirclePhysics = [SKShapeNode shapeNodeWithCircleOfRadius:40]; CirclePhysics.position = CGPointMake(100, 160); CirclePhysics.strokeColor = [SKColor greenColor]; CirclePhysics.lineWidth = 5; CirclePhysics.name = @"Circle"; CirclePhysics.physicsBody = [SKPhysicsBody bodyWithCircleOfRadius:40]; CirclePhysics.physicsBody.dynamic = YES; [self addChild:CirclePhysics]; SKTexture *Texture = [SKTexture textureWithImageNamed:@"DerevoOpora"]; SKSpriteNode *TexturePhysics = [SKSpriteNode spriteNodeWithTexture:Texture]; TexturePhysics.position = CGPointMake(200, 180); TexturePhysics.size = CGSizeMake(100, 30); TexturePhysics.name = @"TexturePhysics"; TexturePhysics.physicsBody = [SKPhysicsBody bodyWithRectangleOfSize:TexturePhysics.frame.size]; TexturePhysics.physicsBody.dynamic = YES; [self addChild: TexturePhysics]; UIBezierPath *TrianglePath = [UIBezierPath bezierPath]; [TrianglePath moveToPoint:CGPointMake(0,0)]; [TrianglePath addLineToPoint:CGPointMake(-50, -100)]; [TrianglePath addLineToPoint:CGPointMake(50, -100)]; [TrianglePath addLineToPoint:CGPointMake(0, 0)]; SKShapeNode *TrianglePhysics = [SKShapeNode shapeNodeWithPath:TrianglePath.CGPath ]; TrianglePhysics.position = CGPointMake(400, 190); TrianglePhysics.lineWidth = 2; TrianglePhysics.strokeColor = [SKColor blackColor]; TrianglePhysics.fillColor = [SKColor blueColor]; TrianglePhysics.name = @"Triangle"; TrianglePhysics.physicsBody = [SKPhysicsBody bodyWithPolygonFromPath:TrianglePath.CGPath]; TrianglePhysics.physicsBody.dynamic = YES; [self addChild:TrianglePhysics]; SKLabelNode *LabelPhysics = [SKLabelNode labelNodeWithText:@"Xcode"]; LabelPhysics.position = CGPointMake(500, 200); LabelPhysics.fontSize = 22; LabelPhysics.physicsBody = [SKPhysicsBody bodyWithEdgeLoopFromRect:CGRectMake(-25, -25, 50, 50)]; LabelPhysics.name = @"Label"; [self addChild:LabelPhysics]; } -(void)SKSpriteNodeDemo { SKTexture *Texture = [SKTexture textureWithImageNamed:@"desert_BG"]; SKSpriteNode *BackgroundSprite = [SKSpriteNode spriteNodeWithTexture:Texture]; BackgroundSprite.size = CGSizeMake(640, 320); BackgroundSprite.position = CGPointMake(0, 0); BackgroundSprite.anchorPoint = CGPointMake(0, 0); BackgroundSprite.name = @"BackgroundSprite"; [self addChild:BackgroundSprite]; SKSpriteNode *SimpleSprite = [SKSpriteNode spriteNodeWithColor:[UIColor blueColor] size:CGSizeMake(50, 50)]; SimpleSprite.position = CGPointMake(200, 150); SimpleSprite.zPosition = 1; SimpleSprite.name = @"SimpleSprite"; [self addChild:SimpleSprite]; SKSpriteNode *ImageSprite = [SKSpriteNode spriteNodeWithImageNamed:@"DerevoOpora"]; ImageSprite.position = CGPointMake(250, 50); ImageSprite.size = CGSizeMake(100, 15); ImageSprite.name = @"ImageSprite"; [self addChild:ImageSprite]; } -(void)SKShapeNodeDemo { SKShapeNode *Circle = [SKShapeNode shapeNodeWithCircleOfRadius:20]; Circle.position = CGPointMake(50, 200); Circle.lineWidth = 10; Circle.strokeColor = [SKColor blueColor]; Circle.fillColor = [SKColor redColor]; Circle.name = @"Circle"; [self addChild:Circle]; SKShapeNode *Quad = [SKShapeNode shapeNodeWithRect:CGRectMake(0, 0, 50, 50)]; Quad.position = CGPointMake(100, 200); Quad.lineWidth = 4; Quad.strokeColor = [SKColor whiteColor]; Quad.fillColor = [SKColor blackColor]; Quad.name = @"Quad"; [self addChild:Quad]; SKShapeNode *Ellips = [SKShapeNode shapeNodeWithEllipseInRect:CGRectMake(0, 0, 50, 90)]; Ellips.position = CGPointMake(200, 200); Ellips.lineWidth = 2; Ellips.strokeColor = [SKColor greenColor]; Ellips.fillColor = [SKColor purpleColor]; Ellips.glowWidth = 5; Ellips.name = @"Ellips"; [self addChild:Ellips]; UIBezierPath *RoundedRectPath = [UIBezierPath bezierPathWithRoundedRect:CGRectMake(0, 0, 50, 50) cornerRadius:12]; SKShapeNode *RoundedRect = [ SKShapeNode shapeNodeWithPath:RoundedRectPath.CGPath centered:YES]; RoundedRect.position = CGPointMake(50, 100); RoundedRect.lineWidth = 2; RoundedRect.strokeColor = [SKColor blueColor]; RoundedRect.fillColor = [SKColor redColor]; RoundedRect.name = @"RoundedRect"; [self addChild:RoundedRect]; UIBezierPath *TrianglePath = [UIBezierPath bezierPath]; [TrianglePath moveToPoint:CGPointMake(0,0)]; [TrianglePath addLineToPoint:CGPointMake(-25, -50)]; [TrianglePath addLineToPoint:CGPointMake(25, -50)]; [TrianglePath addLineToPoint:CGPointMake(0, 0)]; SKShapeNode *Triangle = [SKShapeNode shapeNodeWithPath:TrianglePath.CGPath centered:YES]; Triangle.position = CGPointMake(200, 70); Triangle.lineWidth = 2; Triangle.strokeColor = [SKColor blackColor]; Triangle.fillColor = [SKColor blueColor]; Triangle.name = @"Triangle"; [self addChild:Triangle]; } -(void)SKLabelNodeDemo { SKLabelNode *First = [SKLabelNode labelNodeWithFontNamed:@"Chalkduster"]; First.position = CGPointMake(280, 200); First.fontSize = 25; First.fontColor = [SKColor whiteColor]; First.color = [SKColor blueColor]; First.colorBlendFactor = 0.5; First.text = @"Habra Habr!"; First.horizontalAlignmentMode = SKLabelHorizontalAlignmentModeCenter; [self addChild:First]; SKLabelNode *Second = [SKLabelNode labelNodeWithText:@"----"]; Second.fontName = @"Chalkboard SE Bold"; Second.fontColor = [SKColor blackColor]; Second.position = CGPointMake(280, 50); Second.fontSize = 20; [self addChild:Second]; } @end
рддреАрд╡реНрд░
рддреАрд╡реНрд░
import SpriteKit class GameScene: SKScene { override func didMoveToView(view: SKView) { SceneSetting() //SKSpriteNodeDemo() //SKShapeNodeDemo() //SKLabelNodeDemo() //CreatePhysics() PhysicsProperties() } func SceneSetting() { self.backgroundColor = SKColor.orangeColor() self.physicsWorld.gravity = CGVectorMake(0, -1); } func PhysicsProperties() { let RotateAngle = 10 * (2 * M_PI)/360 var Opora1 = SKShapeNode(rect: CGRectMake(-150/2, -10, 150, 20)) Opora1.position = CGPointMake(100, 200) Opora1.strokeColor = SKColor.greenColor() Opora1.fillColor = SKColor.greenColor() Opora1.name = "Opora1" Opora1.physicsBody = SKPhysicsBody(rectangleOfSize: Opora1.frame.size) Opora1.physicsBody.dynamic = false Opora1.zRotation = Float(-RotateAngle) self.addChild(Opora1) var Opora2 = SKShapeNode(rect: CGRectMake(-150/2, -10, 150, 20)) Opora2.position = CGPointMake(468, 200) Opora2.strokeColor = SKColor.redColor() Opora2.fillColor = SKColor.redColor() Opora2.name = "Opora2" Opora2.physicsBody = SKPhysicsBody(rectangleOfSize: Opora2.frame.size) Opora2.physicsBody.dynamic = false Opora2.zRotation = Float(RotateAngle) self.addChild(Opora2) var Opora3 = SKShapeNode(rect:CGRectMake (-568/2, -10, 568, 20)) Opora3.position = CGPointMake(568/2, 10) Opora3.strokeColor = SKColor.yellowColor() Opora3.fillColor = SKColor.yellowColor() Opora3.name = "Opora3" Opora3.physicsBody = SKPhysicsBody(rectangleOfSize: Opora3.frame.size) Opora3.physicsBody.dynamic = false self.addChild(Opora3) var Circle1 = SKShapeNode(circleOfRadius: 15) Circle1.position = CGPointMake(250, 280) Circle1.strokeColor = SKColor.whiteColor() Circle1.fillColor = SKColor.blackColor() Circle1.name = "Circle1" Circle1.physicsBody = SKPhysicsBody(circleOfRadius: 15) Circle1.physicsBody.restitution = 0 self.addChild(Circle1) var Circle2 = SKShapeNode(circleOfRadius: 15) Circle2.position = CGPointMake(310, 280) Circle2.strokeColor = SKColor.whiteColor() Circle2.fillColor = SKColor.purpleColor() Circle2.name = "Circle2" Circle2.physicsBody = SKPhysicsBody(circleOfRadius: 15) Circle2.physicsBody.restitution = 0.7 self.addChild(Circle2) var Quad1 = SKShapeNode(rect: CGRectMake (-30/2, -30/2, 30, 30)) Quad1.position = CGPointMake(50, 320) Quad1.strokeColor = SKColor.whiteColor() Quad1.fillColor = SKColor.whiteColor() Quad1.name = "Quad1" Quad1.physicsBody = SKPhysicsBody(rectangleOfSize: Quad1.frame.size) Quad1.physicsBody.friction = 1 self.addChild(Quad1) var Quad2 = SKShapeNode(rect: CGRectMake (-30/2, -30/2, 30, 30)) Quad2.position = CGPointMake(518, 320) Quad2.strokeColor = SKColor.blackColor() Quad2.fillColor = SKColor.blackColor() Quad2.name = "Quad2" Quad2.physicsBody = SKPhysicsBody(rectangleOfSize: Quad2.frame.size) Quad2.physicsBody.friction = 0.1 self.addChild(Quad2) } func CreatePhysics() { var RectanglePhysics = SKShapeNode(rect: CGRectMake(-580/2, -10, 580, 20)) RectanglePhysics.position = CGPointMake(280, 40) RectanglePhysics.fillColor = SKColor.whiteColor() RectanglePhysics.name = "Rectangle" RectanglePhysics.physicsBody = SKPhysicsBody(rectangleOfSize: RectanglePhysics.frame.size) RectanglePhysics.physicsBody.dynamic = false self.addChild(RectanglePhysics) var CirclePhysics = SKShapeNode(circleOfRadius: 40) CirclePhysics.position = CGPointMake(100, 160) CirclePhysics.strokeColor = SKColor.greenColor() CirclePhysics.lineWidth = 5; CirclePhysics.name = "Circle" CirclePhysics.physicsBody = SKPhysicsBody(circleOfRadius: 40) CirclePhysics.physicsBody.dynamic = true self.addChild(CirclePhysics) let Texture = SKTexture(imageNamed: "DerevoOpora") var TexturePhysics = SKSpriteNode(texture: Texture) TexturePhysics.position = CGPointMake(200, 180) TexturePhysics.size = CGSizeMake(100, 30) TexturePhysics.name = "TexturePhysics" TexturePhysics.physicsBody = SKPhysicsBody(rectangleOfSize: TexturePhysics.frame.size) TexturePhysics.physicsBody.dynamic = true self.addChild(TexturePhysics) var TrianglePath = UIBezierPath() TrianglePath.moveToPoint(CGPointMake(0, 0)) TrianglePath.addLineToPoint(CGPointMake(-50, -100)) TrianglePath.addLineToPoint(CGPointMake(50, -100)) TrianglePath.addLineToPoint(CGPointMake(0, 0)) var TrianglePhysics = SKShapeNode(path: TrianglePath.CGPath) TrianglePhysics.position = CGPointMake(400, 190) TrianglePhysics.lineWidth = 2 TrianglePhysics.strokeColor = SKColor.blackColor() TrianglePhysics.fillColor = SKColor.blueColor() TrianglePhysics.name = "Triangle" TrianglePhysics.physicsBody = SKPhysicsBody(polygonFromPath: TrianglePath.CGPath) TrianglePhysics.physicsBody.dynamic = true self.addChild(TrianglePhysics) var LabelPhysics = SKLabelNode(text: "Xcode") LabelPhysics.position = CGPointMake(500, 200) LabelPhysics.fontSize = 22; LabelPhysics.physicsBody = SKPhysicsBody(edgeLoopFromRect: CGRectMake(-25, -25, 50, 50)) LabelPhysics.name = "Label" self.addChild(LabelPhysics) } func SKSpriteNodeDemo() { var Texture = SKTexture(imageNamed: "desert_BG") var BackgroundSprite = SKSpriteNode(texture: Texture) BackgroundSprite.size = CGSizeMake(640, 320) BackgroundSprite.position = CGPointMake(0, 0) BackgroundSprite.anchorPoint = CGPointMake(0, 0) BackgroundSprite.name = "BackgroundSprite" self.addChild(BackgroundSprite) var SimpleSprite = SKSpriteNode(color: UIColor.blueColor(), size: CGSizeMake(50, 50)) SimpleSprite.position = CGPointMake(200, 150) SimpleSprite.zPosition = 1; SimpleSprite.name = "SimpleSprite" self.addChild(SimpleSprite) var ImageSprite = SKSpriteNode(imageNamed: "DerevoOpora") ImageSprite.position = CGPointMake(250, 50) ImageSprite.size = CGSizeMake(100, 15) ImageSprite.name = "ImageSprite" self.addChild(ImageSprite) } func SKShapeNodeDemo() { var Circle = SKShapeNode(circleOfRadius: 20) Circle.position = CGPointMake(50, 200) Circle.lineWidth = 10 Circle.strokeColor = SKColor.blueColor() Circle.fillColor = SKColor.redColor() Circle.name = "Circle" self.addChild(Circle) var Quad = SKShapeNode(rect: CGRectMake(0, 0, 50, 50)) Quad.position = CGPointMake(100, 200) Quad.lineWidth = 4 Quad.strokeColor = SKColor.whiteColor() Quad.fillColor = SKColor.blackColor() Quad.name = "Quad" self.addChild(Quad) var Ellips = SKShapeNode(ellipseInRect: CGRectMake(0, 0, 50, 90)) Ellips.position = CGPointMake(200, 200) Ellips.lineWidth = 2 Ellips.strokeColor = SKColor.greenColor() Ellips.fillColor = SKColor.purpleColor() Ellips.glowWidth = 5 Ellips.name = "Ellips" self.addChild(Ellips) var RoundedRectPath = UIBezierPath(roundedRect: CGRectMake(0, 0, 50, 50), cornerRadius: 12) var RoundedRect = SKShapeNode(path: RoundedRectPath.CGPath, centered:true) RoundedRect.position = CGPointMake(50, 100) RoundedRect.lineWidth = 2 RoundedRect.strokeColor = SKColor.blueColor() RoundedRect.fillColor = SKColor.redColor() RoundedRect.name = "RoundedRect" self.addChild(RoundedRect) var TrianglePath = UIBezierPath() TrianglePath.moveToPoint(CGPointMake(0, 0)) TrianglePath.addLineToPoint(CGPointMake(-25, -50)) TrianglePath.addLineToPoint(CGPointMake(25, -50)) TrianglePath.addLineToPoint(CGPointMake(0, 0)) var Triangle = SKShapeNode(path: TrianglePath.CGPath, centered: true) Triangle.position = CGPointMake(200, 70) Triangle.lineWidth = 2 Triangle.strokeColor = SKColor.blackColor() Triangle.fillColor = SKColor.blueColor() Triangle.name = "Triangle" self.addChild(Triangle) } func SKLabelNodeDemo() { var First = SKLabelNode(fontNamed: "Chalkduster") First.position = CGPointMake(280, 200) First.fontSize = 25; First.fontColor = SKColor.whiteColor() First.color = SKColor.blueColor() First.colorBlendFactor = 0.5 First.text = "Habra Habr!" First.horizontalAlignmentMode = SKLabelHorizontalAlignmentMode.Center self.addChild(First) var Second = SKLabelNode(text: "----") Second.fontName = "Chalkboard SE Bold" Second.fontColor = SKColor.blackColor() Second.position = CGPointMake(280, 50) Second.fontSize = 20 self.addChild(Second) } }
, . : , . , , . SpriteKit , . , .
рдЦреИрд░, рджреЛрд╕реНрддреЛрдВ, рдпрд╣рд╛рдБ рдореИрдВ рд░реБрдХрдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ рдФрд░ рдЖрдкрдХреЛ рд╡рд╣ рд╕рдм рдХреБрдЫ рд╕рдордЭрдиреЗ рджреВрдВрдЧрд╛ рдЬреЛ рдореИрдВрдиреЗ рдКрдкрд░ рд▓рд┐рдЦрд╛ рдерд╛ред рдЬреИрд╕рд╛ рдХрд┐ рдЖрдкрдиреЗ рджреЗрдЦрд╛ рд╣реЛрдЧрд╛ рдХрд┐ рд╕реНрдкреНрд░рд╛рдЗрдЯрдХрд┐рдЯ рдПрдХ рдмрд╣реБрдд рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рдЗрдВрдЬрди рд╣реИред Apple рд╡рд┐рд╢реЗрд╖рдЬреНрдЮреЛрдВ рдиреЗ рдЕрдкрдирд╛ рд╕рд░реНрд╡рд╢реНрд░реЗрд╖реНрда рдкреНрд░рджрд░реНрд╢рди рдХрд┐рдпрд╛ред рдмреЗрд╢рдХ, рдЗрд╕рдореЗрдВ рдЕрднреА рддрдХ рдРрд╕реА рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ рдирд╣реАрдВ рд╣реИрдВ рдЬреЛ cocos2d рдореЗрдВ рдореМрдЬреВрдж рд╣реИрдВ , рд▓реЗрдХрд┐рди рдлрд┐рд░ рднреА рд╕реНрдкреНрд░рд╛рдЗрдЯрдХрд┐рдЯ рдЙрд╕рд╕реЗ рдмрд╣реБрдд рдЫреЛрдЯреА рд╣реИ рдФрд░ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╡рд╣ рдЕрднреА рднреА рдЖрдЧреЗ рд╣реИ!
рдЗрд╕ рд▓реЗрдЦ рдХреЛ рд▓рд┐рдЦрддреЗ рд╕рдордп, рдореИрдВрдиреЗ рд╕реНрдкреНрд░рд╛рдЗрдЯрдХрд┐рдЯ рдХреА рдХреБрдЫ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд░рд▓ рдкрд╣реЗрд▓реА рдЧреЗрдо рдмрдирд╛рдпрд╛ ред
рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдореЗрд░реЗ рдирд┐рдпрдВрддреНрд░рдг рд╕реЗ рдкрд░реЗ рдХреБрдЫ рдХрд╛рд░рдгреЛрдВ рд╕реЗ, рдЗрд╕ рд╕рдордп рдореИрдВ рдЙрд╕рдХреА рд╕реНрдерд┐рддрд┐ рдХреЛ рдореБрдлреНрдд рдореЗрдВ рдирд╣реАрдВ рдмрджрд▓ рд╕рдХрддрд╛ред рд▓реЗрдХрд┐рди рдореИрдВ рдЖрдкрд╕реЗ рд╡рд╛рджрд╛ рдХрд░рддрд╛ рд╣реВрдВ рдХрд┐ рдирдП рднрд╛рдЧ рдХреЗ рд▓реЗрдЦрди рдХреЗ рд╕рд╛рде, рдореИрдВ рдЧреАрдерд╣рдм рдкрд░ рдЗрд╕ рдЧреЗрдо рдХреЗ рдкреВрд░реНрдг рдХреЛрдб рдХреЛ рдЙрдЬрд╛рдЧрд░ рдХрд░реВрдВрдЧрд╛ ред
рдХреБрдЫ рдЫрд╡рд┐рдпрд╛рдВ
рдЦреЗрд▓ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ: рдЖрддреНрдорд╛ рдкрд╛рд░реА: рдЕрдЧрд▓реА рдкреАрдврд╝реА
рдЬреЛ рд▓реЛрдЧ рдХреЗрд╡рд▓ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдирд╛рдирд╛ рд╕реАрдЦ рд░рд╣реЗ рд╣реИрдВ, рдЙрдирдХреЗ рд▓рд┐рдП рдСрдмреНрдЬреЗрдХреНрдЯрд┐рд╡-рд╕реА рдФрд░ рд╕реНрд╡рд┐рдлреНрдЯ рднрд╛рд╖рд╛рдУрдВ рдореЗрдВ рдмрд╣реБрдд рдЕрдЪреНрдЫреЗ рд╡реАрдбрд┐рдпреЛ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рд╣реИрдВ ред рдЗрдирдХрд╛ рдирд┐рд░реНрдорд╛рдг рдПрд▓реЗрдХреНрд╕ рдирд╛рдо рдХреЗ рд▓рдбрд╝рдХреЗ рдиреЗ рдХрд┐рдпрд╛ рд╣реИ ред рд╡рд╣ рд╣рдмреНрдмрд░ : рдПрдЬрд╝реЗрдХреА рдкрд░ рд╣реИ ред рдкреНрд░рддреНрдпреЗрдХ рд╡реАрдбрд┐рдпреЛ рдореЗрдВ, рд╡рд╣ рдмрд╣реБрдд рд╕рд╛рд╡рдзрд╛рдиреА рд╕реЗ рднрд╛рд╖рд╛ рдХреЗ рдореБрдЦреНрдп рдкрд╣рд▓реБрдУрдВ рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рддрд╛ рд╣реИ рдФрд░ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдпрд╣ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИред рдпреЗ рд╕рдмрдХ рд╢реБрд░реБрдЖрддреА рдФрд░ рдЙрди рджреЛрдиреЛрдВ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдЙрдкрдпреЛрдЧреА рд╣реЛрдВрдЧреЗ рдЬреЛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА iOS рдХреЗ рд▓рд┐рдП рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрд╡рддрдВрддреНрд░ рд╣реИрдВ ред
рдСрдмреНрдЬреЗрдХреНрдЯрд┐рд╡-рд╕реА
рддреАрд╡реНрд░
рдкреБрдирд╢реНрдЪ рдорд┐рддреНрд░реЛ! рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдк рдореБрдЭреЗ рдЕрдкрдиреА рд╡реНрдпрд╛рдХрд░рдг рд╕рдВрдмрдВрдзреА рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдХрдбрд╝рд╛рдИ рд╕реЗ рдиреНрдпрд╛рдп рдирд╣реАрдВ рдХрд░реЗрдВрдЧреЗ, рдЗрд╕рдХреЗ рд▓рд┐рдП рдореЗрд░реА рджреВрд╕рд░реА рднрд╛рд╖рд╛ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдореИрдВ рдХрдард┐рди рдЕрдзреНрдпрдпрди рдХрд░рддрд╛ рд╣реВрдВред
рдкреАрдкреАрдПрд╕ рдирд┐рд╖реНрдХрд░реНрд╖ рдореЗрдВ, рдореИрдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдПрдмрд┐рд╕рдореВрди рдХреЛ рдзрдиреНрдпрд╡рд╛рдж рджреЗрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ , рдЬрд┐рдиреНрд╣реЛрдВрдиреЗ рдореБрдЭреЗ рдЖрдкрдХреЗ рдмреАрдЪ рд╣реЛрдиреЗ рдХрд╛ рд╕рдореНрдорд╛рди рджрд┐рдЦрд╛рдпрд╛!