【问题标题】:Adding UIGravityBehavior and UIPushBehavior after a collision takes place in iOS 7在 iOS 7 中发生碰撞后添加 UIGravityBehavior 和 UIPushBehavior
【发布时间】:2014-01-31 19:27:06
【问题描述】:

我正在搞乱 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];
}

【问题讨论】:

  • 只是在黑暗中拍摄,尝试CGVectorMake(0.0f, -1.0f) 获取您的重力值。
  • 请将您的答案标记为已接受,这样这个问题就不会显示为打开状态。

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


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-23
    • 1970-01-01
    • 1970-01-01
    • 2015-06-26
    相关资源
    最近更新 更多