Swift/SpriteKit-碰撞和物体
我有一个名为Item的类,其中有一个名为itemNode的实例变量,类型为SKSpriteNode。在我的游戏场景类中,当我创建物品的实例时,我会创建一个物理实体,该实体将被赋予物品的itemNode。在我的碰撞检测系统中,当角色的物理体与itemNode的物理体碰撞时,我希望在其节点的物理体刚刚碰撞的Item对象上执行一个函数。然而,碰撞系统只返回物理体。如何仅在给定节点的物理体的情况下访问Item对象?SKPhyicsBody类具有指向其所附加的SKNode实例的属性 您的碰撞检测代码可以如下所示:Swift/SpriteKit-碰撞和物体,swift,sprite-kit,collision-detection,skphysicsbody,skphysicscontact,Swift,Sprite Kit,Collision Detection,Skphysicsbody,Skphysicscontact,我有一个名为Item的类,其中有一个名为itemNode的实例变量,类型为SKSpriteNode。在我的游戏场景类中,当我创建物品的实例时,我会创建一个物理实体,该实体将被赋予物品的itemNode。在我的碰撞检测系统中,当角色的物理体与itemNode的物理体碰撞时,我希望在其节点的物理体刚刚碰撞的Item对象上执行一个函数。然而,碰撞系统只返回物理体。如何仅在给定节点的物理体的情况下访问Item对象?SKPhyicsBody类具有指向其所附加的SKNode实例的属性 您的碰撞检测代码可以如
func didBeginContact(contact: SKPhysicsContact) {
var item: SKSpriteNode
var character: SKSpriteNode
//Change this on the basis of the order of your categoryBitMask values
if (contact.bodyA.categoryBitMask < contact.bodyB.categoryBitMask)
{
item = contact.bodyA.node as SKSpriteNode
character = contact.bodyB.node as SKSpriteNode
}
else
{
item = contact.bodyB.node as SKSpriteNode
character = contact.bodyA.node as SKSpriteNode
}
//Perform necessary operations on item and character
}
UserData属性:
item.userData = NSMutableDictionary(object: self, forKey: "ItemInstance"))
谢谢,这让我更近了一步。但是现在我有了节点(它是Item类的一个实例变量),有没有办法访问节点所属的Item对象?
item.userData = NSMutableDictionary(object: self, forKey: "ItemInstance"))