我在这上面花了太长时间。有人已经解决了这个问题,请帮助。
敌人向我的船开火。SKPhysicsContact 接手,我得到了contactPoint。我在世界坐标中的接触点引爆发射的导弹。都好。现在我想使用该点,而不是在contactPoint返回的场景坐标中,而是在我的船坐标中开始从我被击中的船上发射烟雾。我以前使用过 convertPoint 函数,成功了,但我似乎无法在这里得到它......文档说 contactPoint 用场景坐标表示,而 myShip 有它的坐标,作为世界节点的子节点,它是场景节点的子节点。它们位于相同的节点层次结构中。我想...我有一个场景->世界->相机,其中 myShip 是世界的一个孩子。我认为,我的代码是说将 contactPoint 从场景坐标转换为 myShip 中的坐标。但这不起作用。也没有任何其他组合。我错过了什么?我怀疑相机层次结构,但不确定。返回到smoke.position的数字已经不正常了......
- (SKEmitterNode *) newSmokeEmitter: (SKPhysicsContact *) contact
{
NSString *smokePath = [[NSBundle mainBundle] pathForResource:@"ShipSmoke" ofType:@"sks"];
SKEmitterNode *smoke = [NSKeyedUnarchiver unarchiveObjectWithFile:smokePath];
smoke.targetNode = myShip;
smoke.name = @"shipSmoke";
smoke.position = [self convertPoint:contact.contactPoint toNode:myShip];
//my temporary kludge that places the smoke on the ship, randomly
//smoke.position = CGPointMake(skRand(-25,25), skRand(-25,+25));
NSLog(@"Ship at world pos: %f,%f", myShip.position.x, myShip.position.y);
NSLog(@"Contact at scene pos: %f,%f", contact.contactPoint.x, contact.contactPoint.y);
NSLog(@"Smoke position at ship pos: %f,%f", smoke.position.x, smoke.position.y);
[myShip addChild:smoke];
return smoke;
}