Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 使用SpriteKit摄影机节点防止位置偏移_Ios_Camera_Sprite Kit_Path Finding_Gameplay Kit - Fatal编程技术网

Ios 使用SpriteKit摄影机节点防止位置偏移

Ios 使用SpriteKit摄影机节点防止位置偏移,ios,camera,sprite-kit,path-finding,gameplay-kit,Ios,Camera,Sprite Kit,Path Finding,Gameplay Kit,我注意到,centerOnNode:方法如图所示 - (void)centerOnNode:(SKNode *)node { cameraOffset = [node.scene convertPoint:node.position fromNode:node.parent]; node.parent.position = CGPointMake(node.parent.position.x - cameraOffset.x, node.parent.position.y -

我注意到,
centerOnNode:
方法如图所示

- (void)centerOnNode:(SKNode *)node {

    cameraOffset = [node.scene convertPoint:node.position fromNode:node.parent];
    node.parent.position = CGPointMake(node.parent.position.x - cameraOffset.x, node.parent.position.y - cameraOffset.y);

}
极大地影响子节点的相对位置。一旦此方法运行,子节点实际上似乎会受到影响。下图显示了不移动的逻辑,然后向左移动并稍微向下移动:

我画了一个浅蓝色的框来估计物理体,它看起来是路径引用的,而不是更新的帧。您看到的线和圆表示我用于寻路的两种方法

  • 带点的线只是光线测试,我正在做,看看沿着绿线的光线是否与正方形的物理体相交
  • 您在上角看到的一个点是使用
    GameplayKit
    构建一条路径,避免将黑色正方形作为障碍物
我正在努力找出如何避免摄像机重新定位影响场景中儿童的定位

仅供参考:我已经通过移动角色而不是相机测试了寻路功能,它工作正常(如下所示)


显然,相机偏移是问题所在。如果有人能告诉我如何保持摄像机的移动和寻路的精确性,我将不胜感激

你有没有试着让点击框看看你的物理身体是否正确?是的。他们是对的。我确实找到了一个解决方法-我只是跟踪相机偏移,并将其添加到我评估的点上,并且它可以工作…但仅在
GameplayKit
方法的模拟器上(我的pathfinder在这两种方法上都可以正常工作)。这是另一种情况,模拟器的行为与我的设备完全不同。非常恼人。它只是一个模拟器,不是模拟器,因此%的错误更大。loli甚至无法让GameplayKit方法在设备上运行,但在模拟器上就可以了。讨厌模拟器。。不要移动场景来模拟摄影机,尤其是涉及物理实体时。如果您需要GameplayKit,您的最低操作系统还支持
SKCameraNode
。用它来代替。你有没有试着启用点击框来查看你的物理实体是否正确?是的,我有。他们是对的。我确实找到了一个解决方法-我只是跟踪相机偏移,并将其添加到我评估的点上,并且它可以工作…但仅在
GameplayKit
方法的模拟器上(我的pathfinder在这两种方法上都可以正常工作)。这是另一种情况,模拟器的行为与我的设备完全不同。非常恼人。它只是一个模拟器,不是模拟器,因此%的错误更大。loli甚至无法让GameplayKit方法在设备上运行,但在模拟器上就可以了。讨厌模拟器。。不要移动场景来模拟摄影机,尤其是涉及物理实体时。如果您需要GameplayKit,您的最低操作系统还支持
SKCameraNode
。用它来代替。