美文网首页
物理仿真

物理仿真

作者: T92 | 来源:发表于2016-10-28 11:21 被阅读17次

物理仿真就比较有意思了,之前很火的愤怒的小鸟就是全部用物理仿真完成的,使用物理仿真可以实现弹跳,重力,吸附等效果

import UIKit

class ViewController: UIViewController {
    
    
    //仿真者(现实动画)
    var dynamic: UIDynamicAnimator!
    //现实行为
    var dynamicitem: UIDynamicItemBehavior!
    //重力行为
    var gravi: UIGravityBehavior!
    //碰撞行为
    var colli: UICollisionBehavior!
    //吸附行为
    var sna: UISnapBehavior!
    //吸附行为item
    var maiImageView: UIImageView!
    
    
    override func viewDidLoad() {
        super.viewDidLoad()
        
        //dynamic1()
        dynamic2()
    }
    
    //点击屏幕一次,创建一个imageView让其遵循现实,重力,碰撞行为
    func dynamic1(){
        //创建仿真者
        dynamic = UIDynamicAnimator(referenceView: self.view)
        //创建现实行为
        dynamicitem = UIDynamicItemBehavior(items: [])
        //设置弹力值,数值越大弹力越大
        dynamicitem.elasticity = 0.6
        //重力行为
        gravi = UIGravityBehavior(items: [])
        //碰撞行为
        colli = UICollisionBehavior(items: [])
        //开启刚体碰撞
        colli.translatesReferenceBoundsIntoBoundary = true
        //碰撞模式
        //colli.collisionMode = UICollisionBehaviorMode.Everything
        //将行为添加到仿真者中
        dynamic.addBehavior(dynamicitem)
        dynamic.addBehavior(gravi)
        dynamic.addBehavior(colli)
    }
    
    override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) {
        
        /* 函数1使用
        //横坐标
        let x = CGFloat(arc4random() % 300)
        let size = CGFloat(arc4random() % 50 + 5)
        
        //图片
        let imageArray = ["1","bird1","bluebird1","ice1","pig1","pig_44"]
        
        //创建ImageView
        let imageView = UIImageView(frame: CGRectMake(x,50,size,size))
        let index = Int(arc4random() % UInt32(imageArray.count))
        imageView.image = UIImage(named: imageArray[index])
        self.view.addSubview(imageView)
        
        //让imageView遵循各种行为
        dynamicitem.addItem(imageView)
        gravi.addItem(imageView)
        colli.addItem(imageView)
        
        */
        
        //函数2使用
        
        //先移除仿真者上的所有行为
        dynamic.removeAllBehaviors()
        
        //获取手指点击位置
        let touch = (touches as NSSet).anyObject()
        let point = touch?.locationInView(self.view)
        
        //初始化吸附行为
        //参数1:需要吸附行为作用的对象
        //参数2:需要移动到的位置
        sna = UISnapBehavior(item: maiImageView, snapToPoint: point!)
        
        //设置弹跳幅度
        sna.damping = 0.8
        
        //将吸附行为添加到仿真者中
        dynamic.addBehavior(sna)
        
    }
    
    func dynamic2(){
        maiImageView = UIImageView(frame: CGRectMake(0,0,100,100))
        maiImageView.image = UIImage(named: "1")
        self.view.addSubview(maiImageView)
        
        //初始化仿真者
        dynamic = UIDynamicAnimator(referenceView: self.view)
    }
}

相关文章

  • 5.3 iOS 物理仿真器(动画者)

    1.3物理仿真器(动画者) (一)物理仿真器的作用 作用:可以让物理仿真元素执行物理仿真行为,是UIDynamic...

  • UIDynamic-iOS中的物理引擎

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

  • UIDynamic - UIKit的物理引擎

    1.创建一个物理仿真器(设置仿真范围) 2.创建相应的物理仿真行为(添加物理仿真元素) 3.将物理仿真行为添加到物...

  • UIDynamic-吸附-重力-碰撞-物理仿真动画

    现实生活中: 运动场==物理仿真器跑步==物理仿真行为人==仿真元素 创建步骤: // 1.创建物理仿真器,并且指...

  • 物理仿真

    物理仿真就比较有意思了,之前很火的愤怒的小鸟就是全部用物理仿真完成的,使用物理仿真可以实现弹跳,重力,吸附等效果

  • 5.2 iOS UIDynamic使用步骤

    1.2UIDynamic使用步骤 第一步:创建物理仿真器.第二步:创建相应的物理仿真行为.第三步:将物理仿真行为添...

  • UIDynamic动画

    基础知识 UIDynamic是物理仿真动画,使用前先了解三个类:物理仿真元素(Dynamic Item):要执行动...

  • ios物理仿真

    1、父类 吸附行为 推动行为 刚性附着行为 弹性附着行为 碰撞检测 2、视图控制器类 3、调用 demo地址htt...

  • iOS物理仿真

    ————————————【 iOS—UIDynamic 】————————————— 一、简单介绍 1.什么是UI...

  • UIDynamic(物理仿真)

    一、重力行为

网友评论

      本文标题:物理仿真

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