在WWDC2014上,Sprite Kit又有了非常多新的提升!

当中一个非常有意思的东西就是Physics Field!也就是物理场!

这意味着我们在Sprite kit上编写虚拟物理场的游戏将变得非常easy!

这里我依据WWDC2014上What's new in Sprite kit的官方视频上的DEMO,

用Swift语言自己做了一个Demo。

截图例如以下:

先放上GitHub链接:

https://github.com/songrotek/PhysicsFieldsWorld.git

我另外录制了效果视频大家能够先一睹为快:

http://v.youku.com/v_show/id_XNzI2MzUzNzYw.html

以下介绍一下Physics Field!

1. 整体情况

Sprite Kit的物理场Physics Field一共同拥有十个:

enum FieldType{

case LinearGravityField  // 线性重力场

case RadialGravityField  // 放射重力场

case DragField  // 阻力场

case VortexField  // 涡流场

case VelocityField // 速度场

case NoiseField  // 噪声场

case TurbulenceField  //紊乱场

case SpringField // 弹簧场

case ElectricField // 电子场

case MagneticField // 磁场

}

2.场的通用參数

那么全部类型的场都在SKFieldNode这个类中进行创建和设置!

不管是什么类型的场,都有一些通用的參数设置。例如以下

// 场的影响区域,超出区域的物体不受场影响,默认是无限

springField.position = fieldCenter

springField.name = "SpringField"

addChild(springField)

其它场一样的方式,就是參数的设置依据详细须要不一样

4.每种场!

4.1 线性场Linear Gravity Field

就是符合牛顿第二定律 F=ma

用它能够制造各种方向的重力,当然用physics world的gravity也能够设置,但这个场能够设置范围。

4.2 放射重力场 Radial Gravity Field

要模拟一下月球绕着地球转就得用这个,重力场在一个点上。

4.3 阻力场 Drag Field

在这个场就像一个物体运动遇到摩擦要减速,摩擦力取决于物体的速度

4.4 涡流场 Vortex Field

这个场能够用来制作龙卷风的效果,场的力绕着中心转,假设strength为正就是逆时针,假设为负就是顺时针

4.5 噪声场 Noise Field 和 紊乱场 Turbulence Field

噪声场就是每一个位置受力情况随机,有个smoothness參数来调整噪声力的平滑程度

紊乱场合噪声场非常接近,但对物体的影响较小

4.6 弹簧场 Spring Field

能够使物体像连接到了场中心的弹簧,会在场中心来回移动

4.7 速度场

须要加入一个SKTexture纹理,由纹理确定每一个场位置点的力方向。

能够实现的效果就是比方弄了一条河的速度场,那么一个物体放在河中就能沿着河流移动

4.8 电场Electric Field 和 磁场 Magnetic Field

就是洛伦茨力F=q(E * VB) ,当中qE是电场力,qVB是磁场力

为了实现电场和磁场的模拟,Sprite Kit的PhysicsBody中加入了Charge也就是带电量。

但眼下就我个人实验,在Swift下并没能实现电磁场的模拟,等待Apple的完好吧

5 小结

Physics Field是个非常酷的特性,值得掌握使用,非常方便!

【注:本文为原创文章,如需转载,请注明出处,来自songrotek的blog】

iOS Sprite Kit最新特性Physics Field虚拟物理场Swift測试的更多相关文章

  1. iOS Sprite Kit教程之xcode安装以及苹果帐号绑定

    iOS Sprite Kit教程之xcode安装以及苹果帐号绑定 其它的网站上下载安装Xcode 有时候,应用商店下载较慢,所以用户也可以选择从其他网站下载Xcode安装文件.下面讲解这种Xcode的 ...

  2. iOS Sprite Kit教程之滚动场景

    iOS Sprite Kit教程之滚动场景 滚动场景 在很多的游戏中,场景都不是静止的,而是滚动的,如在植物大战僵尸的游戏中,它的场景如图2.26所示. 图2.26  植物大战僵尸 在图2.26中,用 ...

  3. iOS Sprite Kit教程之场景的切换

    iOS Sprite Kit教程之场景的切换 Sprite Kit中切换场景 每一个场景都不是单独存在的.玩家可以从一个场景中切换到另外一个场景中.本小节,我们来讲解场景切换.在每一个游戏中都会使用到 ...

  4. iOS Sprite Kit教程之场景的设置

    iOS Sprite Kit教程之场景的设置 Sprite Kit中设置场景 在图2.8所示的效果中,可以看到新增的场景是没有任何内容的,本节将讲解对场景的三个设置,即颜色的设置.显示模式的设置以及测 ...

  5. iOS Sprite Kit教程之真机测试以及场景的添加与展示

    iOS Sprite Kit教程之真机测试以及场景的添加与展示 IOS实现真机测试 在进行真机测试之前,首先需要确保设备已经连在了Mac(或者Mac虚拟机)上,在第1.9.1小节开始,设备就一直连接在 ...

  6. iOS Sprite Kit教程之申请和下载证书

    iOS Sprite Kit教程之申请和下载证书 模拟器虽然可以实现真机上的一些功能,但是它是有局限的.例如,在模拟器上没有重力感应.相机机等.如果想要进行此方面的游戏的开发,进行程序测试时,模拟器显 ...

  7. iOS Sprite Kit教程之使用帮助文档以及调试程序

    iOS Sprite Kit教程之使用帮助文档以及调试程序 IOS中使用帮助文档 在编写代码的时候,可能会遇到很多的方法.如果开发者对这些方法的功能,以及参数不是很了解,就可以使用帮助文档.那么帮助文 ...

  8. iOS Sprite Kit教程之编写程序以及Xcode的介绍

    iOS Sprite Kit教程之编写程序以及Xcode的介绍 Xcode界面介绍 一个Xcode项目由很多的文件组成,例如代码文件.资源文件等.Xcode会帮助开发者对这些文件进行管理.所以,Xco ...

  9. iOS Sprite Kit教程之编敲代码以及Xcode的介绍

    iOS Sprite Kit教程之编敲代码以及Xcode的介绍 Xcode界面介绍 一个Xcode项目由非常多的文件组成,比如代码文件.资源文件等.Xcode会帮助开发人员对这些文件进行管理.所以,X ...

随机推荐

  1. tidb 记录文档

    ansible-playbook stop.yml   / start.yml 重启集群,在ansible目录下执行 SHOW STATS_META; 查看统计信息 重启集群:ansible-play ...

  2. 2588: Count on a tree

    敢问和zwt的树有何区别..改了读入直接交..四百个人A,三百多个PE..于是果断贡献几发PE.. http://ideone.com/9XCg3D

  3. vue 笔记备份

    Vue实现数据双向绑定的原理:Object.defineProperty() vue实现数据双向绑定主要是:采用数据劫持结合发布者-订阅者模式的方式,通过Object.defineProperty() ...

  4. USACO 6.1 Postal Vans(一道神奇的dp)

    Postal Vans ACM South Pacific Region -- 2003 Tiring of their idyllic fields, the cows have moved to ...

  5. 【Java】 剑指offer(49) 丑数

    本文参考自<剑指offer>一书,代码采用Java语言. 更多:<剑指Offer>Java实现合集   题目 我们把只包含因子2.3和5的数称作丑数(Ugly Number). ...

  6. pandas使用总结

    一.pandas简介 Pandas是基于Numpy开发出的,是一款开放源码的BSD许可的Python库,为Python编程语言提供了高性能,易于使用的数据结构和数据分析工具.Pandas用于广泛的领域 ...

  7. Linux 常用基本命令及应用技巧

    需要pdf 版 联系我 我的文件中有目录一.Linux 的常用基本命令................................................................. ...

  8. ES6-const注意

    注意要点 const 如何做到变量在声明初始化之后不允许改变的?其实 const 其实保证的不是变量的值不变,而是保证变量指向的内存地址所保存的数据不允许改动.此时,你可能已经想到,简单类型和复合类型 ...

  9. vue.js-过滤器 filters使用详细示例

    什么也不说了,直接上干货: 1.首先,获取后台数据到页面,并调用过滤器 在<script>中添加 onRefreshItems (currentPage, perPage) { if (t ...

  10. Revit二次开发示例:AutoUpdate

    在Revit打开文件时,修改文件信息.并记录状态,存到log文件中. #region Namespaces using System; using System.Collections.Generic ...