首页 > 解决方案 > 如何将 UICollisionBehavior 动画化为 iOS 上移动的 UIView 元素?

问题描述

我正在做一个游戏,你必须用一个可轻弹的球击中一个目标。

所以现在我用球击中了目标,但没有任何反应。但是,如果我击中目标的原点,则会发生碰撞:球从一个看不见的物体反弹回来,屏幕另一侧的目标移动,就像被球击中一样。

所以显然只有目标是动画的,而不是碰撞属性。我怎样才能解决这个问题?

UICollisionBehavior - 代码

self.animator = UIDynamicAnimator(referenceView: football.superview!)
collision = UICollisionBehavior(items: [football,target])
collision.collisionDelegate = self
collision.translatesReferenceBoundsIntoBoundary = true
animator.addBehavior(collision)

CABasicAnimation - 代码

    func coreAnimateGoalRight(){
        let animation = CABasicAnimation(keyPath: "position.x")
        animation.fromValue = target.center.x
        animation.toValue = screenSize.width - target.frame.size.width/2
        animation.duration = 5
        animation.fillMode = .forwards
        animation.autoreverses = true
        animation.isRemovedOnCompletion = false
        animation.beginTime = CACurrentMediaTime()
        
        target.layer.add(animation, forKey: nil)
        
    }

标签: iosswiftuidynamicanimatoruidynamicbehavioruicollisionbehavior

解决方案


推荐阅读