出于某种原因,我的主要玩家的物理身体实际上并没有在场景中工作。在场景中我初始化了我的播放器
-(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等同于我在爱斯基摩课上所做的?