【发布时间】:2014-05-13 04:06:10
【问题描述】:
我有这样的代码:
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
}
【问题讨论】:
-
在两个SKPhysicsBody实例发生碰撞时调用didBeginContact方法,用于实现碰撞检测。我认为您正在寻找的是 -touchesBegan: 方法。
-
是的,我知道。但我的逻辑是,当碰撞时,然后做一些创建节点并添加到场景中,而不仅仅是触摸添加。
-
所以问题是 -didBeginContact 方法没有被调用?
-
不,didBeginContac 调用了。问题是,当我添加子鸡蛋时,鸡蛋的位置设置不正确。它转到 (0,0) ,而实际上我将它设置为 (100,100) 。抱歉我的笨拙描述。
标签: sprite-kit