美文网首页
IOS 物理引擎UIDynamic

IOS 物理引擎UIDynamic

作者: 越天高 | 来源:发表于2020-05-28 15:49 被阅读0次

什么是UIDynamic

UIDynamic是从iOS 7开始引入的一种新技术,隶属于UIKit框架
可以认为是一种物理引擎,能模拟和仿真现实生活中的物理现象
重力、弹性碰撞等现象

物理引擎的价值

广泛用于游戏开发,经典成功案例是“愤怒的小鸟”
让开发人员可以在远离物理学公式的情况下,实现炫酷的物理仿真效果
提高了游戏开发效率,产生更多优秀好玩的物理仿真游戏

知名的2D物理引擎

Box2d
Chipmunk

使用步骤

要想使用UIDynamic来实现物理仿真效果,大致的步骤如下
1.创建一个物理仿真器(顺便设置仿真范围)

2.创建相应的物理仿真行为(顺便添加物理仿真元素)

  1. 将物理仿真行为添加到物理仿真器中 -> 开始仿真

重力

 //1. 创建仿真器
    let  animator  = {
            return UIDynamicAnimator(referenceView: view)
        }()
//2.创建仿真行为
        let behavior = UIGravityBehavior(items: [box1])
        //设置重力的方向和速度
        behavior.gravityDirection = CGVector(dx: 2, dy: 15)
       //0表示右侧
        behavior.angle = 3.15 / 2
        behavior.magnitude = 5

        
        //将仿真行为添加到仿真器里面
        animator?.addBehavior(behavior)
        

碰撞

//1. 创建仿真器
    let  animator  = {
            return UIDynamicAnimator(referenceView: view)
        }()
       // 2.创建物理仿真行为
        let behavior = UICollisionBehavior(items: [box1, box2])
        //把参照试图的bounds当作边界
        behavior.translatesReferenceBoundsIntoBoundary = true
        
         // 碰撞模式
        //        Items  只碰撞元素
        //        Boundaries  自碰撞边界
        //        Everything: 啥玩意都碰撞
        behavior.collisionMode = UICollisionBehavior.Mode.everything
        
        //设置碰撞的那边界
        behavior.setTranslatesReferenceBoundsIntoBoundary(with: UIEdgeInsets(top: 0, left: 0, bottom: 20, right: 0))
        let identifier : NSString = "bianjie"
        behavior.addBoundary(withIdentifier: identifier, from: CGPoint(x: 0, y: 300), to: CGPoint(x: 150, y: 300))
        
        //添加碰撞的代理 监听碰撞的状态
        behavior.collisionDelegate = self
        animator?.addBehavior(behavior)

//推

//1. 创建仿真器
   let  animator  = {
           return UIDynamicAnimator(referenceView: view)
       }()
//2.创建仿真行为
       let behavior = UIPushBehavior(items: [box2], mode: UIPushBehavior.Mode.instantaneous)
       
       //设置推的方向
       behavior.pushDirection = CGVector(dx: 0, dy: -6)
       
       //3 添加仿真行为
       animator?.addBehavior(behavior)
       
      

//捕获

//1. 创建仿真器
    let  animator  = {
            return UIDynamicAnimator(referenceView: view)
        }()

/创建仿真行为
        let behavior = UISnapBehavior(item: box1, snapTo: location);
        //越大捕获时的振幅越大
        behavior.damping = 5
        
        //添加行为
        animator?.addBehavior(behavior)
        

相关文章

  • IOS 物理动画之碰撞、重力

    UIDynamic物理引擎UIDynamic是IOS7引入的一项新技术。他包括UIGravityBehavior:...

  • iOS视频直播(物理仿真引擎全面了解)

    UIDynamic 物理仿真引擎全面了解 UIDynamic 是从 iOS 7开始引入的一种新技术,隶属于UIKi...

  • iOS物理引擎-UIDynamic

    UIKit动力学的引入,并不是为了替代CA或者UIView动画,在绝大多数情况下CA或者UIView动画仍然是最优...

  • IOS 物理引擎UIDynamic

    什么是UIDynamic UIDynamic是从iOS 7开始引入的一种新技术,隶属于UIKit框架可以认为是一种...

  • UIDynamic-iOS中的物理引擎

    UIDynamic-iOS中的物理引擎 创建一个物理仿真器 设置仿真范围 创建相应的物理仿真行为 添加物理仿真元素...

  • UIDynamic物理引擎

    概述 最近群里有人私信我关于iOS物理引擎的知识,虽然UIDynamic在iOS7就引入了,但项目中还真没用到过,...

  • UIDynamic 物理引擎

    概念介绍 UIDynamic从ios7才开始有的,其他2D仿真引擎:BOX2D:C语言框架,免费Chipmunk:...

  • 谈谈iOS中的动力学!!!!

    UIDynamic物理仿真 下面介绍一下各种属性 一、简单介绍 1.什么是UIDynamic 2.物理引擎的价值 ...

  • UIDynamic学习笔记-1

    UIDynamic是苹果IOS7才开始使用的一种技术,是一种物理引擎,实现例如重力,碰撞等现象。 Dynamic初...

  • UIDynamic

    简介 UIDynamic是iOS 7之后新添加的一些物理仿真动画库,包含在UIKit框架中。 UIDynamic中...

网友评论

      本文标题:IOS 物理引擎UIDynamic

      本文链接:https://www.haomeiwen.com/subject/gcroahtx.html