在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】

最新文章

  1. 在访问jsp时抛java.lang.IllegalArgumentException: Page directive: invalid value for import的原因
  2. 解决MyEclipse中的js报错的小方法
  3. git pull 然后 ahead of origin/master * commit 消失
  4. 加州大学伯克利分校Stat2.3x Inference 统计推断学习笔记: Section 4 Dependent Samples
  5. 使用Object的wait,notify,notifyAll做线程调度
  6. mac 无法连接android手机进行调试 解决方案
  7. jQuery慢慢啃之核心(一)
  8. 命令passwd报错因inode节点处理记录
  9. 【NOIP模拟】Grid(字符串哈希)
  10. XFTP连接主机文件名显示中文乱码且不能下载的解决方法
  11. hexo从零开始
  12. 简单linux命令1
  13. 【python】gearman阻塞非阻塞,同步/异步,状态
  14. Spring Boot - 基础 POM 文件
  15. 执行sql语句为什么?用PreparedStatement要比Statement好用
  16. 调用不同目录类的protected构造器
  17. Redis数据结构的多种用法
  18. A SQL to insert continuous values
  19. 【LOJ】 #2305. 「NOI2017」游戏
  20. 使用SoapUI测试windows身份验证的webservice

热门文章

  1. Oracle工作笔记
  2. 数据图表插件echarts(二)
  3. MySQL 20个经典面试题
  4. UVA - 11995 - I Can Guess the Data Structure! STL 模拟
  5. poj-2528线段树练习
  6. JAVAEE——淘淘商城第一天:电商行业的背景和技术特点,商城的介绍、技术的选型、系统架构和工程搭建
  7. JAVAEE——SSH项目实战04:联系人添加、列表显示和修改
  8. [ 转载 ] Java基础11--Java总结篇系列:Java泛型
  9. flask使用flask_sqlalchemy连接数据库(python2.7)
  10. bzoj 3669 lct维护最小生成树