Добавление UIGravityBehavior и UIPushBehavior после столкновения происходит в iOS 7

Я возиться с новым физическим API в iOS 7.

Я решил, что сделаю простую игру, у меня есть персонаж, который может перемещаться по экрану одним касанием пальца, периодически фигуры взлетают снизу, и если они попадают в персонажа, игра заканчивается.

Я реализовал все вышеперечисленное, и это прекрасно работает, однако, единственное, что не происходит, - это падение персонажа, когда с ним сталкивается фигура.

Все столкновения работают, моя проблема состоит в том, чтобы заставить персонажа упасть во время столкновения. Поскольку я не хочу, чтобы персонаж мог падать до этого (допустим, он левитирует, пытаясь избежать фигур), я решил добавить персонажа к гравитации, когда происходит столкновение, и это происходит, но сначала он стреляет вверх, поскольку анимация столкновения продолжается.

Есть ли способ предотвратить возникновение анимации столкновения? Есть ли способ лучше?

Вот мой код в collisionBehavior:beganContactForItem:withBoundaryIdentifier:atPoint: метод:

//  Main Character
//
if ([item isEqual:self.mainCharacter]) {
    [self.collision removeItem:item];

    //          Push
    //
    UIPushBehavior *pushBehaviour = [[UIPushBehavior alloc] initWithItems:@[self.mainCharacter] mode:UIPushBehaviorModeInstantaneous];
    [pushBehaviour setPushDirection:CGVectorMake(0.0f, 1.0f)];
    [self.animator addBehavior:pushBehaviour];
    [pushBehaviour setActive:YES];

    [self.gravity addItem:item];
}

1 ответ

Оказывается, я должен был использовать collisionBehavior:beganContactForItem:withItem:atPoint: и тестирование ОБА пунктов в этом методе, чтобы увидеть, если это mainCharacter

Другие вопросы по тегам