zoukankan      html  css  js  c++  java
  • SpriteKit改变Node锚点其物理对象位置不对的解决

    在创建Node的物理对象后,默认情况下物理对象和Node的实际边界相应的非常好,由于此时Node的默认锚点是当中心位置即(0.5,0.5),只是假设我们改变了Node的锚点,就会发现其物理边界还是保持原来的位置,这可不是我们想要的结果:

    let bouncer = SKSpriteNode(imageNamed: "bouncer")
            bouncer.anchorPoint = CGPoint(x: 0.5, y: 0)
            bouncer.position = CGPoint(x: 0, y: -frame.size.height/2.0)
    
            bouncer.physicsBody = SKPhysicsBody(circleOfRadius: bouncer.size.width/2.0)
    
            addChild(bouncer)

    在打开了物理调试选项之后执行App,我们能够清楚地看到实际发生了神马:

    这里写图片描写叙述

    之所以Node会诡异悬空,是由于其物理对象的边界已卡位在屏幕底部了.那为什么Node边界和物理边界不正确应呢?由于我们在代码中改动了它的锚点位置.

    你可能以为物理对象也有诸如锚点之类的属性能够调整,可是并没有 :(

    只是你能够在初始化物理对象的时候人肉定位当中心点,just like this:

    bouncer.physicsBody = SKPhysicsBody(circleOfRadius: bouncer.size.width/2.0, center: CGPoint(x: 0, y: bouncer.size.height/2.0))

    我来解释下一下center的含义:默认(0,0)是Node的中心位置,所以x不须要调整仍是0,只是y如上图所看到的,须要上移半个高度.

    这里写图片描写叙述

    再次执行App,问题得以解决!

  • 相关阅读:
    js对象深拷贝
    数组去重
    css布局之双飞翼布局
    css布局之圣杯布局
    在浏览器中输入URL并回车后都发生了什么?
    浮动和清除浮动
    Javascript 构造函数模式、原型模式
    Javascript之对象组合继承
    js可以随意拖拽的div的实现
    博客美化 之博客的魔方效果
  • 原文地址:https://www.cnblogs.com/yjbjingcha/p/8384708.html
Copyright © 2011-2022 走看看