2014-07-08 52 views
1

我試圖在我的場景上創建一個播放器節點。但是圖片「player.png」並不適合物理實體。他們都是獨立的。 PhysicsBody在地面上,圖像漂浮在空中。我的代碼有什麼問題?我如何讓他們在一起?圖像不適合SKSpriteNode幀

#import "Player.h" 

@implementation Player 
- (instancetype)init { 
    self = [super initWithImageNamed:@"player.png"]; 
    self.name = @"player"; 
    self.physicsBody = [SKPhysicsBody bodyWithRectangleOfSize:CGSizeMake(50, 50)]; 
    self.physicsBody.dynamic = YES; 
    self.physicsBody.allowsRotation = NO; 
    self.physicsBody.affectedByGravity = YES; 

    self.zPosition = 100; 
    self.anchorPoint = CGPointMake(0.5, 0); 

    return self; 
} 

@end 
// myScene.h 
-(void)createSceneContents { 
    self.currentBackground = [Background generateBackground]; 
    [self addChild: self.currentBackground]; 
    self.physicsWorld.gravity = CGVectorMake(0, _gravity); 
    self.physicsWorld.contactDelegate = self; 

    Player *player = [[Player alloc]init]; 
    player.position = CGPointMake([UIScreen mainScreen].applicationFrame.size.width/2, 50); 
    [self addChild:player]; 
} 

回答

2

錨點是你的物理體的中心也在這裏。 你的點0.5,0.0意味着中心x和零y。因此,你的物理體的中心位於你的精靈節點的底部邊緣。 可能是圖像的底部中心。 但物理實體從那裏向下延伸。 這是因爲你用來創建物理體的方法。

定位點很混亂。 他們有時會扮演雙重角色。他們包括很多記錄不完善的隱性行爲。

除非你有依賴於錨點的邏輯,否則最好避免改變它們。 對於一個物理機構來說,重要的是身體在物理世界中的位置。 保持你的精靈模型儘可能簡單。 不斷朝着最簡單的模式努力完成工作。它會簡化你的遊戲邏輯。