아래의 "Floor.swift"클래스는 기본적으로 벽이 많습니다. 내가 화면의 상단에서 오는 개체를 가지고 일단 층과 SKSpriteNodes 충돌, 나는 SKSpriteNode을 제거하고 싶습니다. 아래는 내 플로어 클래스입니다.SKPhysicsContact 카테고리를 검색하지 못함 마스크 마스크 충돌
if (contact.bodyA.categoryBitMask == floorCategory) && (contact.bodyB.contactTestBitMask == objectCategory | pointCategory | lifeCategory) {
contact.bodyB.node!.removeFromParent()
print("COLLISION")
}
을하지만 어떤 이유로 나는 그렇게 이제까지 무엇 어떤 감지를받지 못했습니다 :
import Foundation
import SpriteKit
class Floor: SKNode {
override init() {
super.init()
let leftWall = SKSpriteNode(color: UIColor.brown, size: CGSize(width: 5, height: 50))
leftWall.position = CGPoint(x: 0, y: 50)
leftWall.physicsBody = SKPhysicsBody(rectangleOf: leftWall.size)
leftWall.physicsBody!.isDynamic = false
self.addChild(leftWall)
let rightWall = SKSpriteNode(color: UIColor.brown, size: CGSize(width: 5, height: 50))
rightWall.position = CGPoint(x: 375, y: 50)
rightWall.physicsBody = SKPhysicsBody(rectangleOf: rightWall.size)
rightWall.physicsBody!.isDynamic = false
self.addChild(rightWall)
let bottomWall = SKSpriteNode(color: UIColor.brown, size: CGSize(width: 500, height: 10))
bottomWall.position = CGPoint(x: 150, y: -5)
bottomWall.physicsBody = SKPhysicsBody(rectangleOf: bottomWall.size)
bottomWall.physicsBody!.isDynamic = false
self.addChild(bottomWall)
// Set the bit mask properties
self.physicsBody?.categoryBitMask = floorCategory
self.physicsBody?.contactTestBitMask = objectCategory | pointCategory | lifeCategory
self.physicsBody?.collisionBitMask = dodgeCategory
}
required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemted")
}
}
그런 다음 아래 내 GameScene 클래스에서 "
func didBegin(_ contact: SKPhysicsContact)
"나는 썼다. 내 "Floor"클래스를 내 objectCategory, pointCategory, lifeCategory의 각 클래스에서 "contactTestBitMask"로 만들었습니다. 내가 도대체 뭘 잘못하고있는 겁니까!? 다른 충돌은 감지되지만이 충돌은 감지되지 않습니다.
"ourUnionOfBodies = SKPhysicsBody (본문 : [leftWall.physicsBody!, rightWall.physicsBody!, bottomWall.physicsBody!])"하고 다음 줄 "ourUnionOfBodies.isDynamic = false"에 썼습니다. 여전히 작동하지 않습니까? 나는 그들이 단지 충돌을 감지하지 못한다. 바로 – Dewan
@Dewan 안녕 Dewan - ther 늦은 대답에 대한 미안하지만 나는 여행하고 있었다. 그래서 당신은'ourUnionOfBodies' 물리학 몸체를 만들었고, 당신은 그 물리학 자 본문을 비 동적으로 설정했습니다, 그러나 여러분은 이것을 Floor 객체의 물리학 자 본문으로 설정 했습니까? 'self.physicsBody? ... '작업을하기 전에'self.physicsBody ='를 수행 할 필요가 있습니다. 'self.physicsBody = SkyphysicsBody (bodies ...')가 아니라 물리학 체를 유지하기 위해 별도의 속성을 만든 이유는 무엇입니까? –
나는 그것을 시도했지만 실제로 차이를 만들지 않았습니다. 충돌 감지를 볼 수 없습니다. 그들은 내 층을 통해 계속 떨어졌다. – Dewan