SpriteKit中为何不要在update方法中测试碰撞
来源:互联网 发布:爱心网络宣传语 编辑:程序博客网 时间:2024/05/01 17:57
大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处.
如果觉得写的不好请多提意见,如果觉得不错请多多支持点赞.谢谢! hopy ;)
我们若要在游戏中做碰撞检测有2种办法,一是利用物理引擎,二是自己写代码做每个Node的碰撞检查.
如果自己写检测代码,将检测代码放在哪里是一个问题.一般的你可能想到的第一个地方是update方法中,所以你可能会这么写代码:
override func update(currentTime: NSTimeInterval) { //other code... checkCollisions() }
不过这里有一个小问题,因为在SpriteKit的游戏循环(game loop)中,对于node动作的执行是放在update之后的,这意味着放在update中的碰撞检测总是落后于实际的渲染之后一帧!
如上图所示,在update中的碰撞检测时可能节点间还没有碰到,但实际在该帧中将要碰到,因为节点使用Action移动的!
在一些游戏中你可能感觉不出来,但是这中行为在某些对碰撞十分敏感的游戏中会很让人头疼.
处理起来也十分简单,我们注意到在执行动作之后还有一个didEvaluateActions回调方法,我们把碰撞检测放在这里就可以啦:
override func didEvaluateActions() { checkCollisions() }
0 0
- SpriteKit中为何不要在update方法中测试碰撞
- 在spriteKit中加Button
- SpriteKit物理引擎碰撞中5个重要信息
- Fragment的通信问题, 新建Fragment为何不要在构造方法中传递参数?
- Fragment的通信问题, 新建Fragment为何不要在构造方法中传递参数
- SpriteKit:在场景过渡中暂停动画
- SpriteKit在游戏中模拟一个按钮
- Spritekit中播放背景音乐
- SpriteKit中应用TexturePacker
- Xcode的playground中对于SpriteKit物理对象的更新为何无效
- 如何在 SpriteKit 中使用 Texture Atlas (一)
- SpriteKit中令人迷惑的speedBy:duration:方法
- SpriteKit中类似Cocos2D的CCActionSpawn并发方法GroupAction
- 一张图带你看懂SpriteKit中Update Loop究竟做了神马!
- 不要在ACtivity中oncreate()方法中使用
- 在软件测试中不要做的六件事
- 在软件测试中不要做的六件事
- 在软件测试中不要做的六件事
- hdoj 3789 奥运排序问题
- sizeof 的使用 (初学者);
- 逻辑回归数学推倒讲解
- 用VS打开html文件左下方不显示设计-拆分-源视图的解决方法
- XML (1)
- SpriteKit中为何不要在update方法中测试碰撞
- ARC与非ARC的区别就是对栈区与堆区的管理
- swig的相关命令
- Linux下安装MySQL遇到缺少libncurses库的问题
- HTML5的特性主要包括哪些内容
- java poi3.7实现excel下拉联动
- js定时器
- cmd中if语句set和echo同时使用的问题
- LeetCode 51. N-Queens