1

出于某种原因,我的主要玩家的物理身体实际上并没有在场景中工作。在场景中我初始化了我的播放器

-(id)initWithSize:(CGSize)size {
    if (self = [super initWithSize:size]) {
    Eskimo *runner = [[Eskimo alloc]init];
    runner.position = CGPointMake(100, 300);
    [self addChild:runner];


    self.physicsWorld.gravity = CGVectorMake(0, -3); // 0, -2

    self.physicsWorld.contactDelegate = self;

    [runner performRun];
    }
return self;
}

这是我的爱斯基摩类的初始化:

-(id)init {
if (self = [super init]) {

    self.name = @"runner";

    self.physicsBody = ((Eskimo*)[[Physics alloc]initPhys:self.name :CGSizeMake(60, 60)]).physicsBody;

}

return self;
}

这是我的物理课初始化的一部分:

-(instancetype)initPhys:(NSString*)string :(CGSize)size{
if (self = [super init]) {
    self.type = string;

    if ([self.type isEqualToString:@"runner"]) {
        self.physicsBody = [SKPhysicsBody bodyWithRectangleOfSize:size];
        self.physicsBody.restitution = 0.3;
        self.physicsBody.mass = 1;
        self.physicsBody.categoryBitMask = runnerCategory;
        self.physicsBody.contactTestBitMask = monsterCategory;
        self.physicsBody.collisionBitMask = groundCategory|monsterCategory;

    }
}

return self;


}

我在场景类中输出了我的跑步者的恢复原状,只是为了看看physicsBody是否在那里并且它正确地出来了。但是,即使我设置了重力矢量,跑步者也不会受到它的影响,也不会受到我施加于它的任何力的影响。我不知道为什么,因为当我在 Eskimo 类本身中拥有 PhysicsBody 的东西时,它在没有物理类的情况下工作。我在这里缺少什么吗?你能不能把physicsBodies等同于我在爱斯基摩课上所做的?

4

0 回答 0