在iOS 7中发生冲突后添加UIGravityBehavior和UIPushBehavior

时间:2014-01-31 19:27:06

标签: objective-c cocoa-touch cocoa ios7 uikit-dynamics

我正在使用iOS 7中的新物理API。

我决定做一个简单的游戏,我有一个角色可以在手指的触摸屏上移动,周期性地,形状从底部飞起来,如果他们击中了角色,那就是游戏结束。

我已经实现了上述所有内容并且效果很好,但是,唯一没有的就是当一个形状与他发生碰撞时角色掉落。

所有碰撞都有效,我的问题是在发生碰撞时试图使角色掉落。因为我不希望角色能够在此之前掉下来(假设他在试图避开形状时它是悬浮的)我决定在碰撞发生时将角色添加到引力中,并且确实如此,但首先,角色射击随着碰撞动画的继续向上。

有没有办法防止碰撞动画发生?还有更好的方法吗?

以下是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 个答案:

答案 0 :(得分:1)

事实证明我本来应该使用collisionBehavior:beganContactForItem:withItem:atPoint:并测试此方法中的两个项目,看它是否是mainCharacter