Я хочу сделать футбольный мяч с помощью IOS SpriteKit.

Я хочу сделать футбольный мяч с помощью IOS SpriteKit.

Мне удалось создать мяч в коде, подобном следующему. Однако совсем не прыгает. Чтобы сделать скорость отскока, как я могу это сделать?

(UITouch *touch in touches) {

 SKSpriteNode *sprite = [SKSpriteNode spriteNodeWithImageNamed:@"Ball"];
 sprite.position = location;
 const CGFloat radius = 20.0f;
 SKPhysicsBody *pbody = [SKPhysicsBody bodyWithCircleOfRadius:radius];
 sprite.physicsBody = pbody;
 sprite.size = (CGSize){radius * 2, radius * 2};
 sprite.physicsBody.linearDamping=0.12f;
 [self addChild:sprite];

}

Я заявил так.

-(id)initWithSize:(CGSize)size {    
if (self = [super initWithSize:size]) {

    self.backgroundColor = [SKColor colorWithRed:0.15 green:0.15 blue:0.3 alpha:1.0];
    self.physicsBody = [SKPhysicsBody bodyWithEdgeLoopFromRect:(CGRect){CGPointZero, size}];

    self.physicsWorld.gravity=CGVectorMake(0, -100);
}

return self;

}


person Takeshi Iijima    schedule 23.10.2013    source источник
comment
как вы объявили свои другие физические тела?   -  person Pierre    schedule 23.10.2013
comment
изменить реституцию   -  person DogCoffee    schedule 24.10.2013
comment
спасибо! Я пытаюсь возместить ущерб!   -  person Takeshi Iijima    schedule 24.10.2013
comment
я вставил эту строку -> ball.physicsBody.restitution = 1;   -  person Takeshi Iijima    schedule 24.10.2013
comment
Однако на настоящий мяч это все равно не похоже.   -  person Takeshi Iijima    schedule 24.10.2013
comment
Можно ли установить вес?   -  person Takeshi Iijima    schedule 24.10.2013


Ответы (1)


Мне кажется это мяч

- (void) soccerBallExample
{
    // the world bounds
    self.physicsBody = [SKPhysicsBody bodyWithEdgeLoopFromRect:CGRectMake(0, 0, self.size.width, self.size.height)];

    // the ball
    SKShapeNode *ball;
    ball = [[SKShapeNode alloc] init];
    CGMutablePathRef myPath = CGPathCreateMutable();
    CGPathAddArc(myPath, NULL, 0,0, 30, 0, M_PI*2, YES);
    ball.path = myPath;
    CGPathRelease(myPath);
    ball.fillColor = [SKColor blueColor];
    ball.position = CGPointMake(200, 200);
    [self addChild:ball];

    // set the physics
    ball.physicsBody = [SKPhysicsBody bodyWithCircleOfRadius:30];
    ball.physicsBody.restitution = 0.8;
}

В вашем примере вы используете спрайт, поэтому для использования радиуса

// ball.size.width * 0.5;
person DogCoffee    schedule 25.10.2013
comment
рад помочь - я предлагаю вам пройти некоторые из этих руководств raywenderlich.com - person DogCoffee; 29.10.2013
comment
@Smick: вы должны освободить свой путь, позвонив CGPathRelease(myPath); - person Martin; 17.01.2014