ฟังก์ชั่นผู้เล่น
@objc func playerFunction(){
player = SKSpriteNode(imageNamed: "Player")
player.name = "Hero"
player.size = CGSize(width: 80, height: 80)
player.physicsBody = SKPhysicsBody(rectangleOf: player.size)
player.physicsBody?.affectedByGravity = false
player.physicsBody?.isDynamic = false
player.physicsBody?.allowsRotation = false
player.physicsBody!.categoryBitMask = 1
player.physicsBody!.collisionBitMask = 0
player.physicsBody!.contactTestBitMask = 2 | 5 | 6 | 7
player.physicsBody?.velocity.dx = 0
player.physicsBody?.velocity.dy = 0
player.zPosition = 1
player.position = CGPoint(x: self.frame.width / 2 - 700, y: self.frame.height / 2 - player.frame.height)
self.addChild(player)
}
วิธีการแพลตฟอร์ม
@objc func platformFunction (){
platform_One = SKSpriteNode(imageNamed: "Platform")
platform_One.physicsBody = SKPhysicsBody(rectangleOf: platform_One.size)
platform_One.physicsBody?.affectedByGravity = false
platform_One.physicsBody?.isDynamic = false
platform_One.zPosition = 4
platform_One.position = CGPoint(x: 1 + self.frame.width / 2 - 570, y: self.frame.height / 2 - 260)
self.addChild(platform_One)
platform_Two = SKSpriteNode(imageNamed: "Platform")
platform_Two.physicsBody = SKPhysicsBody(rectangleOf: platform_Two.size)
platform_Two.physicsBody?.affectedByGravity = false
platform_Two.physicsBody?.isDynamic = false
platform_Two.physicsBody!.categoryBitMask = 7
platform_Two.physicsBody!.collisionBitMask = 1
platform_Two.physicsBody!.contactTestBitMask = 1
platform_Two.zPosition = 5
platform_Two.position = CGPoint(x: 1 + self.frame.width / 2 - 420, y: self.frame.height / 2 - 260)
self.addChild(platform_Two)
วิธีการของผู้เล่นและรหัสวิธีการของแพลตฟอร์มถูกเพิ่มไว้ด้านบน และผู้เล่นไม่ได้ลงจอดบนแพลตฟอร์มแทน ผู้เล่นจะต้องผ่านแพลตฟอร์ม แม้ว่าจะมีการระบุฟิสิกส์ไว้ข้างต้นก็ตาม
collisionBitMask
สำหรับโปรแกรมเล่นหรือแพลตฟอร์มแรก นี่อาจเป็นปัญหา นอกจากนี้ การมาสก์ของ2 | 5 | 6 | 7
ไม่ใช่วิธีที่ถูกต้องในการทำสิ่งต่าง ๆ - ตัวเลขควรเป็นเลขยกกำลัง 2 (เช่น 1, 2, 4, 8, 16, ...) โปรดดูคำตอบนี้สำหรับข้อมูลเพิ่มเติม - person George_E   schedule 18.04.2021