SpriteKit改变Node锚点其物理对象位置不正确的解决
来源:互联网 发布:gal一般用哪种编程语言 编辑:程序博客网 时间:2024/06/07 22:50
在创建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,问题得以解决!
2 0
- SpriteKit改变Node锚点其物理对象位置不正确的解决
- cocos2dX改变锚点位置
- Xcode的playground中对于SpriteKit物理对象的更新为何无效
- SpriteKit:开启物理逐像素(Per-Pixel)碰撞检测后发现的问题及解决
- SpriteKit:开启物理逐像素(Per-Pixel)碰撞检测后发现的问题及解决(续)
- SpriteKit中Node数量只增不降的原因和解决
- 解决android7.0popupwindow弹出框位置不正确的问题
- 解决PopupWindow在7.0以上位置不正确的bug
- 解决PopupWindow在7.0以上位置不正确的bug
- 对于wpf上的关键点改变其状态
- SpriteKit可摧毁物理场景的进一步完善
- listbox 显示不正确的位置,scrollbar位置不正确
- Android拖动控件改变其位置
- Android拖动控件改变其位置
- SpriteKit学习笔记 - - - 物理系统
- vs2008调试出现异常时触发断点位置和堆栈不正确的解决
- 解决android7.0上某些PopuWindow显示位置不正确的问题
- location对象改变浏览器位置
- CSS属性:vertical-align:middle,设置为什么无效!
- OpenCV玩九宫格数独(一)——九宫格图片中提取数字
- java 正则表达式 手机号 邮箱
- Android动画之——圆形进度条加波浪线
- 二十一、UI-Grid 单元格导航
- SpriteKit改变Node锚点其物理对象位置不正确的解决
- AngularJS与后端php的数据交互
- 桥接模式和NAT模式区别
- Android常用实例—Alert Dialog的使用
- Java的栈与堆
- webpack和gulp区别
- Android LayoutInflater讲解
- 为Android安装BusyBox —— 完整的bash shell
- 为了解决viewpager彻底删除fragment问题