【发布时间】:2016-06-14 14:21:20
【问题描述】:
我在我的场景中添加了几个精灵 (SKSpriteNode),如下所示:
let NPuzzle_Texture = SKTexture(imageNamed: "SKTexture.png")
NPuzzle0 = SKSpriteNode(texture: NPuzzle_Texture)
NPuzzle1 = SKSpriteNode(texture: NPuzzle_Texture)
NPuzzle2 = SKSpriteNode(texture: NPuzzle_Texture)
NPuzzle0.position = CGPoint (x: 100, y:125)
NPuzzle0.position = CGPoint (x: 300, y:125)
NPuzzle0.position = CGPoint (x: 500, y:125)
background.addChild(NPuzzle0)
background.addChild(NPuzzle1)
background.addChild(NPuzzle2)
我还添加了几个不同纹理的精灵:
let Grey_Back = SKTexture(imageNamed: "Grey_Back.png")
grey_back = SKSpriteNode(texture: Grey_back)
grey_back.position = CGPoint (x: 1024, y:125)
grey_back.alpha = 0.5
background.addChild(grey_back)
现在我将新的精灵 (SKSpriteNode) 添加到先例的 gray_back 中,如下所示:
grey_back.addChild(new_sprite1)
grey_back.addChild(new_sprite2)
grey_back.addChild(new_sprite3)
当我尝试查看 new_sprite 的位置是否与 NPuzzle 精灵相交时,什么都没有发生。但是如果 new_sprite 被添加到场景中:
background.addChild(new_sprite0)
background.addChild(new_sprite1)
background.addChild(new_sprite2)
它有效。事实上,如果精灵已经添加了不同的父母(背景和灰色背景),它就不起作用。我不明白的是 gray_back 是背景的孩子,所以它应该可以工作。为什么不呢?
这是一个检查精灵是否相互交叉的代码示例:
switch selectedNode.name {
case "new_sprite0":
if selectedNode.frame.intersects(NPuzzle0.frame) && (selectedNode.angle == 0) {
谢谢!
【问题讨论】:
-
frame 是相对于父节点的框架。如果要比较帧,它们必须都是同一节点的子节点。否则,您将不得不翻译框架...