[Swift]SpriteKit를 사용하여 충돌 판정을 받았습니다.
그림 완성
규격.
방법
GameScene.swift
다음과 같이 완료
import SpriteKit
class GameScene: SKScene, SKPhysicsContactDelegate {
// カテゴリを用意しておく。
let redCategory: UInt32 = 0x1 << 0
let greenCategory: UInt32 = 0x1 << 1
override func didMoveToView(view: SKView) {
// デリゲートをselfにしておく。
self.physicsWorld.contactDelegate = self
self.size = view.bounds.size
self.physicsBody = SKPhysicsBody(edgeLoopFromRect: self.frame)
self.physicsWorld.gravity = CGVectorMake(0.0, -3.0)
// 赤い正方形を真ん中に固定しておく。
let redSquare = SKSpriteNode(color: UIColor.redColor(), size: CGSizeMake(50, 50))
redSquare.position = CGPoint(
x: CGRectGetMidX(self.frame),
y: CGRectGetMidY(self.frame)
)
redSquare.physicsBody = SKPhysicsBody(rectangleOfSize: CGSizeMake(50, 50))
redSquare.physicsBody.affectedByGravity = false
redSquare.physicsBody.dynamic = false
// カテゴリを設定する。
redSquare.physicsBody.categoryBitMask = redCategory
redSquare.physicsBody.contactTestBitMask = greenCategory
self.addChild(redSquare)
}
override func touchesBegan(touches: NSSet, withEvent event: UIEvent) {
// タップする度に、その位置にグリーンの長方形を出す。
for touch in touches {
let location = touch.locationInNode(self)
let greenRectangle = SKSpriteNode(color: UIColor.greenColor(), size: CGSizeMake(70, 50))
greenRectangle.position = location
greenRectangle.physicsBody = SKPhysicsBody(rectangleOfSize: CGSizeMake(70, 50))
// カテゴリを設定する。
greenRectangle.physicsBody.categoryBitMask = greenCategory
greenRectangle.physicsBody.contactTestBitMask = redCategory
self.addChild(greenRectangle)
}
}
override func update(currentTime: CFTimeInterval) {
}
// 衝突したとき。
func didBeginContact(contact: SKPhysicsContact!) {
var firstBody, secondBody: SKPhysicsBody
// firstを赤、secondを緑とする。
if contact.bodyA.categoryBitMask < contact.bodyB.categoryBitMask {
firstBody = contact.bodyA
secondBody = contact.bodyB
} else {
firstBody = contact.bodyB
secondBody = contact.bodyA
}
// 赤と緑が接したときの処理。
if firstBody.categoryBitMask & redCategory != 0 &&
secondBody.categoryBitMask & greenCategory != 0 {
secondBody.node.removeFromParent()
}
}
}
이상은 저의 영광입니다.
Reference
이 문제에 관하여([Swift]SpriteKit를 사용하여 충돌 판정을 받았습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/mochizukikotaro/items/c4f7f234ab5a5c306285텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)