如何通过physicsBody获取SKSpriteNode?
Posted
技术标签:
【中文标题】如何通过physicsBody获取SKSpriteNode?【英文标题】:How to get SKSpriteNode by physicsBody? 【发布时间】:2015-08-02 14:27:44 【问题描述】:我用自己的类扩展了SKSpriteNode
以获得更多功能。
但是当某些东西“命中”这个节点并调用didBeginContact
时,我怎样才能得到这个扩展节点?
因为contact.bodyA
和contact.bodyB
是physicsBody 并且这是游戏场景的父级。
这是我的 SKSpriteNode 子类:
class Orange: SKSpriteNode
...
func createPhysicsBody()
self.physicsBody = SKPhysicsBody(circleOfRadius: self.size.width / 2)
self.physicsBody?.dynamic = true
...
这是我的 didBeginContact 代码:
func didBeginContact(contact: SKPhysicsContact)
switch(contact.bodyA.categoryBitMask + contact.bodyB.categoryBitMask)
case orangeCategory + bulletCategory:
contactOrangeBullet(contact.bodyA, bodyB: contact.bodyB)
break;
default:
break;
在contactOrangeBullet
中只是在这种情况发生时处理所有事情的代码。但我需要的不仅仅是physicsBody
。我需要physicsBody
只是其中一部分的“橙色”。
或者我理解错了什么,这是不可能的,因为physicsBody 不坚持“橙色”,尽管它是在那里创建的?
【问题讨论】:
【参考方案1】:因此,这里有一个示例,说明如何获取与物理体关联的节点。
var node = SKSpriteNode(imageNamed: "theimage")
node.physicsBody = SKPhysicsBody(circleOfRadius: 6)
var copy = node.physicsBody
现在,我将获取与copy
关联的SKNode
var node = copy.node
所以,您所要做的就是调用physicsBody 上的属性node
。请记住,node
属性返回的是 SKNode
,而不是 SKSpriteNode
。
【讨论】:
是的,这就是我目前正在使用的。但是这个 SKNode 对我的Orange
类函数和属性一无所知。
我现在就是这样做的:***.com/questions/31812108/…以上是关于如何通过physicsBody获取SKSpriteNode?的主要内容,如果未能解决你的问题,请参考以下文章