我正在尝试在场景中的节点周围获得直接碰撞接触框。我希望它的碰撞检测恰好围绕节点本身,而不是矩形或圆形。
苹果开发者手册在 Objective-C 中给出了这段代码
SKSpriteNode *sprite = [SKSpriteNode spriteNodeWithImageNamed:@"Spaceship"];
sprite.physicsBody = [SKPhysicsBody bodyWithTexture:sprite.texture size:sprite.texture.size];
我在 Swift 中尝试过这个
invisinode.physicsBody = SKPhysicsBody(edgeChainFromPath: invisinode.size)
但是没有效果。使碰撞盒直接位于 invisinode 周围的正确语法是什么?
最佳答案
这个答案将以 Swift 形式提供,您的问题被标记为两者,所以我不确定这是否是您正在寻找的内容。
如果您希望您的 SKSpriteNode
与您提供的纹理大小相同,那么您可以将物理体设置为相同大小,并以节点为中心:
var skspriteTexture = SKTexture(imageNamed: "Spaceship")
var skspriteNode = SKSpriteNode(texture: skspriteTexture, size: skspriteTexture.size())
skspriteNode.physicsBody = SKPhysicsBody(circleOfRadius: skspriteNode.size.width / 2)
关于objective-c - 屏蔽节点的语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31195495/