Sprite kit physicsWorld.bodyAlongRayStart问题

Sprite kit physicsWorld.bodyAlongRayStart问题,sprite-kit,Sprite Kit,我正在尝试使用physicsWorld.bodyAlongRayStart函数来实现玩家和敌人实体之间的视线。然而,这个函数似乎被窃听了。 以下是我的实现: let body :SKPhysicsBody! = aScene.physicsWorld.bodyAlongRayStart(enemy.spriteComponent.node.position, end: player.spriteComponent.node.position) if body != nil { prin

我正在尝试使用physicsWorld.bodyAlongRayStart函数来实现玩家和敌人实体之间的视线。然而,这个函数似乎被窃听了。 以下是我的实现:

let body :SKPhysicsBody! = aScene.physicsWorld.bodyAlongRayStart(enemy.spriteComponent.node.position, end: player.spriteComponent.node.position)

if body != nil {
    print ("playerPOS \(player.spriteComponent.node.position)")
    print ("enemyPOS \(enemy.spriteComponent.node.position)")
    print (body.node?.position)
}
在控制台上,我看到如下内容:

playerPOS (220.463073730469, 368.627807617188)
enemyPOS (89.3868865966797, 457.411376953125)
(0.0, 0.0)

我的问题是,它是如何返回超出光线范围的节点的?

我发现了问题所在。由于玩家和敌人实体都被添加到WorldNode中,我必须使用aScene.convertPoint(位置,fromNode:aScene.WorldNode)转换它们的位置,并使用函数physicsWorld.bodyAlongRayStart()中转换的位置


谢谢你一路上的帮助。

我发现了问题所在。由于玩家和敌人实体都被添加到WorldNode中,我必须使用aScene.convertPoint(位置,fromNode:aScene.WorldNode)转换它们的位置,并使用函数physicsWorld.bodyAlongRayStart()中转换的位置


感谢您一路上的帮助。

对不起,输入错误。应该是身体!=零。你是在(0,0)处有一个大精灵,还是场景有一个物理体?是的,场景有一个物理体。但我认为该函数只返回从开始位置到结束位置之间沿光线的实体。请尝试将
view.showsPhysics=true
添加到
didMoveToView
以显示场景中所有物理实体的轮廓。我在viewController中执行了此操作,同时显示FPS和节点计数。不知道那有什么用?我已经确定所有的墙都有一个物理实体连接到它们上。对不起,输入错误。应该是身体!=零。你是在(0,0)处有一个大精灵,还是场景有一个物理体?是的,场景有一个物理体。但我认为该函数只返回从开始位置到结束位置之间沿光线的实体。请尝试将
view.showsPhysics=true
添加到
didMoveToView
以显示场景中所有物理实体的轮廓。我在viewController中执行了此操作,同时显示FPS和节点计数。不知道那有什么用?我已经确定所有的墙都有一个物理实体连接到它们上。