스위프트로 적급과 광탄급 플레이 샘플을 만들었기 때문이다.(SpriteKit)
SpriteKit을 사용합니다.
사용할 파일은 다음과 같습니다.
SKSpriteNode
의 하위 클래스로 반을 창설한다.적과 광탄은 적당한 시기에 삭제한다.만약 이렇게 하지 않는다면 적과 광탄이 대량으로 생성되는 사격 게임에서 노드의 대량 발생으로 인해 매우 무거워질 것이다.
코드
GameScene.swift
import SpriteKit
class GameScene: SKScene {
override func didMoveToView(view: SKView) {
// ユルい重力の設定。
self.physicsWorld.gravity = CGVectorMake(0, -0.6)
}
override func touchesBegan(touches: NSSet, withEvent event: UIEvent) {
for touch: AnyObject in touches {
let location = touch.locationInNode(self)
// 敵の生成。
let enemy = Enemy()
enemy.setScene(self)
self.addChild(enemy)
}
}
}
매우 유창하게 썼다.이전에는 적과 광탄 등급을 정하지 않았기 때문에 모두 이 파일에 적혀 있었다.\(^∆^)/Enemy.swift
import SpriteKit
class Enemy: SKSpriteNode {
var gameScene: SKScene!
func setScene(scene: SKScene) {
self.gameScene = scene
}
// タイマーを用意。これで自動で光弾を放つようにする。
var timer = NSTimer()
init() {
super.init(texture: nil, color: UIColor.blueColor(), size: CGSizeMake(80, 20))
// 敵の設定を適当に書いておきます。
self.position = CGPointMake(400, 500)
self.physicsBody = SKPhysicsBody(rectangleOfSize: CGSizeMake(80, 20))
self.physicsBody.velocity = CGVectorMake(40, 200)
// タイマーを起動します。
self.timer = NSTimer.scheduledTimerWithTimeInterval(0.6, target: self, selector: "update", userInfo: nil, repeats: true)
}
func update() {
if self.position.y > 400 {
// 生きている間は、光弾を放つ。
let bullet = Bullet(node: self)
gameScene.addChild(bullet)
} else {
// 敵を消してタイマーも止める。
self.removeFromParent()
self.timer.invalidate()
}
}
}
광탄 레벨도 만들어요.하지만 적의 반과 거의 같다.Bullet.swift
import SpriteKit
class Bullet: SKSpriteNode {
var timer = NSTimer()
init(node: SKSpriteNode) {
super.init(texture: nil, color: UIColor.yellowColor(), size: CGSizeMake(10, 10))
self.position = CGPointMake(node.position.x, node.position.y + 10)
self.physicsBody = SKPhysicsBody(rectangleOfSize: CGSizeMake(10, 10))
self.physicsBody.velocity = CGVectorMake(-10, 120)
self.timer = NSTimer.scheduledTimerWithTimeInterval(1, target: self, selector: "update", userInfo: nil, repeats: true)
}
func update() {
if self.position.y < 300 {
self.removeFromParent()
self.timer.invalidate()
}
}
}
반을 나누어 쓰면 매우 유창하게 쓸 수 있다˙∆˙)/전에 한 서류에 썼는데 어떻게 썼는지...
enumerateChildNodesWithName
사용했습니다!
Reference
이 문제에 관하여(스위프트로 적급과 광탄급 플레이 샘플을 만들었기 때문이다.(SpriteKit)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/mochizukikotaro/items/e2b48e2b2b6159949efd텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)