Sprite kit 在didBeginContact中添加新的子对象,但位置更改为零?

Sprite kit 在didBeginContact中添加新的子对象,但位置更改为零?,sprite-kit,Sprite Kit,我有一个类似这样的代码: eggSprite *egg = [[eggSprite alloc]init]; egg.position = CGPointMake(100, 100); [self addChild:egg]; 如果我把它放在我的更新逻辑中,一切都很好,但是如果我把它放在didBeginContact:方法中,这很奇怪,它会添加这个子节点,但是位置会设置为(0,0),是不是我不能在didBeginContact:方法中添加节点?还是我做错了什么 - (v

我有一个类似这样的代码:

    eggSprite *egg = [[eggSprite alloc]init];
    egg.position = CGPointMake(100, 100);
    [self addChild:egg];
如果我把它放在我的更新逻辑中,一切都很好,但是如果我把它放在didBeginContact:方法中,这很奇怪,它会添加这个子节点,但是位置会设置为(0,0),是不是我不能在didBeginContact:方法中添加节点?还是我做错了什么

- (void)didBeginContact:(SKPhysicsContact *)contact
{

eggSprite *egg = [[eggSprite alloc]init];
egg.position = CGPointMake(100, 100);

[self addChild:egg];                // <---- after this , the egg's position is change to (0,0) outside this block
}
-(void)didBeginContact:(skphysiccontact*)联系人
{
蛋精灵*egg=[[eggSprite alloc]init];
egg.position=CGPointMake(100100);

[自我添加孩子:鸡蛋];//在
didBeginContact:
中添加新节点是错误的做法。相反,在
didBeginContact:
过程中,将任何新节点添加到可变数组中,并将其添加到循环的
更新:
部分中。当两个SKPhysicsBody实例发生冲突时,将调用didBeginContact方法我想你要找的是-touchesbeated:method。是的,我知道。但我的逻辑是,当发生碰撞时,然后创建一些节点并添加到场景中,而不仅仅是触摸添加。所以问题是没有调用-didBeginContact方法?不,调用了didBeginContac。问题是,当我添加子鸡蛋时,鸡蛋的位置设置不正确。它会变为(0,0),而实际上我会将其设置为(100100)。很抱歉我的描述很笨拙。