美文网首页
重力引擎

重力引擎

作者: _弓长_大人 | 来源:发表于2018-09-25 12:43 被阅读10次
import UIKit

class ViewController: UIViewController,UICollisionBehaviorDelegate {
    
    //UIKIt重力引擎
    var animator:UIDynamicAnimator?
    
    //重力行为
    var gravity :UIGravityBehavior?
    
    //碰撞行为
    var collision:UICollisionBehavior?
    var square: UIView?
    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.
        
        square = UIView(frame: CGRect(x: 160, y: 10, width: 90, height: 90))
        square?.backgroundColor = UIColor.gray
        self.view.addSubview(square!)
        
        let barrier = UIView(frame: CGRect(x: 0, y: 380, width: 180, height: 20))
        barrier.backgroundColor = UIColor.red
        self.view.addSubview(barrier)
        
        //运动管理
        animator = UIDynamicAnimator(referenceView: self.view)
        
        //创建运动行为
        gravity = UIGravityBehavior(items: [square!])
        
        //角度
        gravity?.angle = 1.6
        
        //速度
        gravity?.magnitude = 0.1
        
        //
        //collision = UICollisionBehavior(items: [square,barrier])
        collision = UICollisionBehavior(items: [square!])
        collision?.addBoundary(withIdentifier: "barrier" as NSCopying, for: UIBezierPath(rect: barrier.frame))
        collision?.translatesReferenceBoundsIntoBoundary = true
        
        animator?.addBehavior(gravity!)
        animator?.addBehavior(collision!)
        
        collision?.collisionDelegate = self
        collision?.action = {
            print("transfrom:\(String(describing:self.square?.transform)) center:\(String(describing:self.square?.center))")
        }
        
        let itemBehavior = UIDynamicItemBehavior(items: [square!])
        itemBehavior.elasticity = 0.6
        animator?.addBehavior(itemBehavior)
        
        //运动轨迹添加
        var updateCount = 0
        collision?.action = {
            if (updateCount % 3 == 0) {
                let outline = UIView(frame: (self.square?.bounds)!)
                outline.transform = (self.square?.transform)!
                outline.center = (self.square?.center)!
                
                outline.alpha = 0.5
                outline.backgroundColor = UIColor.clear
                outline.layer.borderColor = self.square?.layer.presentation()?.borderColor
                outline.layer.borderWidth = 1.0
                self.view.addSubview(outline)
            }
            updateCount += 1
        }
        
    }

    
    
    
    func collisionBehavior(_ behavior:UICollisionBehavior, beganContactFor item:UIDynamicItem,withBoundaryIdentifier indentifier:NSCopying?,at p:CGPoint) {
        let view  = item as? UIView
        view?.backgroundColor = UIColor.yellow
        UIView.animate(withDuration: 0.3, animations: {
            view?.backgroundColor = UIColor.gray
        })
    }
    
    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }


}

相关文章

  • 重力引擎

  • UIKit力学(Dynamics)

    UIKit力学是基于Box2D开源物理引擎 UIGravityBehavior 重力 UICollisionBe...

  • 游戏demo -星星池

    该例使用物理引擎+重力加速器事件完成,代码如下: 效果图:

  • 视频播放器-IPlayer-列表播放、全屏播放、重力自动旋转、清

    爱播支持列表播放、全屏播放、重力自动旋转、清晰度切换、播放引擎切换、自定义主题颜色等。https://github...

  • UIDynamic学习笔记-1

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

  • 重力

    今天,我们做了一个跟重力有关的游戏,游戏是这样的,老师先让我们从科学学具袋里拿出一个纸做的小人,拿了一根弯弯的铁丝...

  • 重力

    深渊的开始 是自己走过去的 怨天怨地 只不过暴露了本性 丑陋 可怕的只是 你在咆哮却没人理会 他们永远在微笑 坠下...

  • 重力

    我匍匐在地上 如刍狗般舔舐大地 气喘吁吁 啊,这可憎的重力 我硬撑起身躯 骨架被可怖的压力 碾得咔咔作响 我已眼冒...

  • 重力

    牛顿发现了万有引力定律,是从一个苹果而起源的。那么,如果地球上没有重力?世界将会怎么样?你又会怎么样呢? 今天,我...

  • 重力

    石头滚下山坡,溪水冲向山谷,落瓣萎顿在地,而只有,只有我心飞扬冲天!

网友评论

      本文标题:重力引擎

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