【问题标题】:Problems with UICollisionBehaviorUICollisionBehavior 的问题
【发布时间】:2014-02-11 19:50:17
【问题描述】:

我不确定我是否只是在 UICollisionBehavior 中发现了一些错误,或者我只是没有正确实现它。

我有两个主要问题。

1) 我定期创建一个UICollisionBehaviors,其中只有两个项目,一个播放器和一个从顶部落下或从屏幕底部向上推的新项目。

然而,有时,两个项目(不是玩家)会相互碰撞。但是当我在动画器中记录碰撞时,它们都只有两个项目,播放器和下降/上升项目。

根据UICollisionBehavior 类引用发生碰撞:

您可以向动态动画师添加多个碰撞行为。一个动态项目可以是任意数量的碰撞行为的一部分,只要这些行为属于同一个动画师。例如,您可以为一组比如说蓝色的项目指定一个碰撞行为,而另一个为比如说粉红色的项目指定一个碰撞行为。当您将这两种行为都添加到动态动画制作器时,蓝色项目可以相互碰撞,粉红色项目可以相互碰撞,但蓝色项目和粉红色项目不会碰撞——它们会相互忽略。

使用上面的示例,我的粉红色项目和蓝色项目发生碰撞,尽管它们的碰撞行为不同。

2) 当点击屏幕时,我的玩家被UIPushBehavior 推送,但玩家和物品之间的碰撞(下降/上升)不时被捕获。

我不知道上述问题是否相关,所以我现在将它们放在同一个问题中。

有人知道它可能是什么吗?有没有人发现这是一个错误?

一如既往的感谢。

【问题讨论】:

    标签: ios uiview uikit uikit-dynamics uicollisionbehavior


    【解决方案1】:

    UICollisionBehavior 拥有UICollisionBehaviorMode

    typedef NS_OPTIONS(NSUInteger, UICollisionBehaviorMode) {
        UICollisionBehaviorModeItems        = 1 << 0,
        UICollisionBehaviorModeBoundaries   = 1 << 1,
        UICollisionBehaviorModeEverything   = NSUIntegerMax
    } NS_ENUM_AVAILABLE_IOS(7_0);
    

    默认为UICollisionBehaviorModeEverything,因此项目将与边界和其他项目发生冲突。您需要将此属性设置为UICollisionBehaviorModeBoundaries

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-09-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-02-10
      • 2019-09-04
      • 1970-01-01
      相关资源
      最近更新 更多