情况:我的 iOS 屏幕上有两艘或更多艘飞船。两者都有不同的属性,如名称、大小、生命值和得分。它们显示为SKSpriteNodes
并且每个都添加了一个physicsBody
.
目前,这些额外的属性是扩展的变量SKSpriteNode
class.
import SpriteKit
class ship: SKSpriteNode {
var hitpoints: Int = nil?
var score: Int = nil?
func createPhysicsBody(){
self.physicsBody = SKPhysicsBody(circleOfRadius: self.size.width / 2)
self.physicsBody?.dynamic = true
...
}
}
在这个“游戏”中,你可以向这些船只射击,一旦子弹击中船只,你就会获得积分。通过碰撞检测到“撞船”。
func didBeginContact(contact: SKPhysicsContact){
switch(contact.bodyA.categoryBitMask + contact.bodyB.categoryBitMask){
case shipCategory + bulletCategory:
contactShipBullet(contact.bodyA, bodyB: contact.bodyB)
break;
default:
break;
}
}
Problem:碰撞检测仅返回一个物理主体,我不知道如何获得扩展SKSpriteNode
类就通过这个PhysicsBody。
想法:这是正确的扩展方式吗SKSpriteNode
让我的物品像一艘船一样栩栩如生?当我将一艘船添加到屏幕上时,它看起来像:
var ship = Ship(ship(hitpoints: 1, score: 100), position: <CGPosition>)
self.addChild(ship)
或者这只是一种错误的方法,有更好的方法可以通过碰撞检测找出哪个具有统计数据的对象被子弹击中?
这个问题和我的另一个问题类似question- 我只是想从更广泛的意义上问这个问题。