Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.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
Sprite kit SpriteKit SKFieldNode:为什么可以';我不能在运行时移动字段吗?_Sprite Kit_Skfieldnode - Fatal编程技术网

Sprite kit SpriteKit SKFieldNode:为什么可以';我不能在运行时移动字段吗?

Sprite kit SpriteKit SKFieldNode:为什么可以';我不能在运行时移动字段吗?,sprite-kit,skfieldnode,Sprite Kit,Skfieldnode,我试图在运行时移动SKFieldNode(radialGravity): let movingField = SKFieldNode.radialGravityField( movingField.position = location //location is a touch position addChild(movingField) 只要我命令field节点改变位置,它就会崩溃。我可以在didMoveToView中将字段节点放置在静态位置 我猜SKFieldNodes必须保持在原位,

我试图在运行时移动SKFieldNode(radialGravity):

let movingField = SKFieldNode.radialGravityField(
movingField.position = location  //location is a touch position
addChild(movingField)
只要我命令field节点改变位置,它就会崩溃。我可以在didMoveToView中将字段节点放置在静态位置

我猜SKFieldNodes必须保持在原位,但也许有一个解决方案

其主要思想是将径向场附加到精灵上(精灵上连接有物理体),使其具有吸引/排斥相互作用。我意识到这可以通过更手动的方法来实现,但我试图利用SpriteKit中可用的物理特性


谢谢

通过使字段节点移动以跟踪触摸事件,我可以轻松地移动字段节点。很好

游戏场景的内部

-(void)didMoveToView:(SKView *)view {
    /* Setup your scene here */

    self.backgroundColor = SKColorWithRGB(0, 0, 0);

    // This uses SKTUtils to load my simple SKEmitter
    SKEmitterNode *nd = [SKEmitterNode skt_emitterNamed:@"bokeh"];
    nd.particleZPosition += 100;
    nd.position = CGPointMake(self.size.width/2,self.size.height/2);
    nd.fieldBitMask = 1;

    field = [SKFieldNode radialGravityField];

    field.position = CGPointMake(self.size.width/2,self.size.height/2);;
    field.minimumRadius = 50;
    field.categoryBitMask = 1;

    [self addChild:field];
    [self addChild:nd];

}

-(void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event {
    UITouch *touch = [touches anyObject];
    CGPoint t = [touch locationInNode:self];
    field.position = t;
}

在我的应用程序中,我有一个与你非常相似的方法。我可以很好地设置字段节点的新位置。以下是摘录:

// _targetPos is the touch location in UIView coordinates
CGPoint pos = [k.world convertToScenePoint:_targetPos]; // convert to scene coordinates
self.gravityField.position = pos;
self.dragField.position = pos;

我只能假设您提到的崩溃发生在代码的其他地方。当你的应用程序崩溃时,Xcode显示哪行代码?

请添加错误日志以及调用此代码的位置和次数。