【问题标题】:IOS 7 nested SKScenes with Physik SimulationIOS 7 嵌套 SKScenes 与物理模拟
【发布时间】:2014-03-04 09:21:49
【问题描述】:

我想在 iOS7 的 Spritekit 游戏中使用嵌套 SKScene 中的节点模拟物理。 但它不像它应该的那样工作。 将子场景添加到主场景后,将物理体从子场景添加到对象不会引发错误,但它似乎无法正常工作。 子场景中的 phsics 不起作用。 有没有更好的方法将静态世界与动态对象分开?

例如: 我有第一个主要场景:

@interface MyScene : SKScene
  // ...
@end

@implementation MyScene
-(id)initWithSize:(CGSize)size {   
  // ... setup blabla

  // first object
  SKSpriteNode *obj1 = [SKSpriteNode spriteNodeWithImageNamed:@"obj1"];
  obj1.physicsBody = [SKPhysicsBody bodyWithCircleOfRadius:obj1.size.height / 2];
  // ... obj1.physicsBody setup with collisionBitMask
  [self addChild:obj1];


  // New SKScene with second Object
  World *world = [[World alloc] initWithSize:size];
  [self addChild:obj1];
  [world addObjects];
}
@end

和世界 SKScene 类:

@interface World : SKScene
  // ...
@end


@implementation World

-(void)addObject{
  // second object
  SKSpriteNode *obj2 = [SKSpriteNode spriteNodeWithImageNamed:@"obj2"];
  obj2.physicsBody = [SKPhysicsBody bodyWithCircleOfRadius:obj2.size.height / 2];
  // ... obj2.physicsBody setup with collisionBitMask and dynamic = no
  [self addChild:obj2];

}
@end

【问题讨论】:

    标签: objective-c ios7 sprite-kit game-physics


    【解决方案1】:

    您一次只能运行/激活/呈现一个场景。

    所以有两个场景的基本前提是徒劳的。在这种情况下,物理学不起作用(如预期的那样)只是一种症状。

    虽然您可以创建场景对象并将它们作为子对象添加到另一个场景中,但这不会使它们像场景一样工作,而是更像普通的 SKNode。您还应该注意到,您不会在子场景中收到联系人回调,也不会收到updatedidEvaluateActionsdidSimulatePhysics消息。

    【讨论】:

    • 考虑到我无法更新场景的位置,将SKScene 添加为另一个场景的子节点似乎毫无用处:/
    猜你喜欢
    • 1970-01-01
    • 2016-01-03
    • 2013-10-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-26
    • 2018-04-18
    • 2013-10-01
    相关资源
    最近更新 更多