`

iOS Sprite Kit最新特性Physics Field虚拟物理场Swift测试

    博客分类:
  • ios
阅读更多
转载于:http://blog.csdn.net/songrotek/article/details/30802659

在WWDC2014上,Sprite Kit又有了很多新的提升!
其中一个很有意思的东西就是Physics Field!也就是物理场!
这意味着我们在Sprite kit上编写虚拟物理场的游戏将变得非常简单!
这里我根据WWDC2014上What's new in Sprite kit的官方视频上的DEMO,
用Swift语言自己做了一个Demo。
截图如下:http://img.blog.csdn.net/20140614214928109?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvc29uZ3JvdGVr/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast

先放上GitHub链接:
https://github.com/songrotek/PhysicsFieldsWorld.git
我另外录制了效果视频大家可以先一睹为快:
http://v.youku.com/v_show/id_XNzI2MzUzNzYw.html

下面介绍一下Physics Field!
1. 总体情况
Sprite Kit的物理场Physics Field一共有十个:
http://img.blog.csdn.net/20140614215058484?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvc29uZ3JvdGVr/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast
enum FieldType{
    case LinearGravityField  // 线性重力场
    case RadialGravityField  // 放射重力场
    case DragField  // 阻力场
    case VortexField  // 涡流场
    case VelocityField // 速度场
    case NoiseField  // 噪声场
    case TurbulenceField  //紊乱场
    case SpringField // 弹簧场
    case ElectricField // 电子场
    case MagneticField // 磁场
}

2.场的通用参数
那么所有类型的场都在SKFieldNode这个类中进行创建和设置!
无论是什么类型的场,都有一些通用的参数设置。如下
// 场的影响区域,超出区域的物体不受场影响,默认是无限
var region: SKRegion!
// 场强,默认是1
var strength: CFloat
// 场的衰减指数,用来计算某个距离的作用力大小,从最小半径开始计算。默认是0
var falloff: CFloat
// 场的最小影响半径,默认是一个非常小的数
var minimumRadius: CFloat
// 如果enabled,则场起作用默认是true(在Swift下貌似不太好使,估计beta问题
var enabled: Bool
// 场的排他性,如果是true,则其他场无法作用在本场region范围。如果有两个场的影响范围重合,则无法判断哪个场作用
var exclusive: Bool   
// 场的作用物体类别,默认是all
@see SKPhysicsBody.fieldBitMask
@see SKEmitterNode.fieldBitMask
var categoryBitMask: UInt32

3.场的创建
举例创建弹簧场:
let springField = SKFieldNode.springField()
springField.strength = 0.05
springField.falloff = -5
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】
分享到:
评论

相关推荐

    SpriteKit物理系统Demo

    SpriteKit是苹果公司开发的游戏引擎,它为iOS、macOS和tvOS等平台提供了一套强大的2D游戏开发工具。这个“SpriteKit物理系统Demo”是开发者为了展示如何在SpriteKit环境中实现物理模拟而创建的一个实例。让我们深入...

    spine-spritekit, 针对 iOS 7 SpriteKit的非官方书脊 2D 运行时.zip

    spine-spritekit, 针对 iOS 7 SpriteKit的非官方书脊 2D 运行时 脊椎 spritekitUnofficial ( http://esotericsoftware.com )的非官方 iOS 7运行时运行时官方运行时在这里:http://esotericsoftware.com/spine-runti

    IOS SpriteKit 详细的微信打飞机案例

    IOS SpriteKit学习之微信打飞机

    iOS游戏开发之使用 Spritekit 框架和 Swift 的 iOS 2D 太空射击游戏源码

    在iOS游戏开发中,SpriteKit框架是Apple专为2D游戏设计的强大工具,结合Swift语言,可以构建出高质量、性能优异的游戏。本教程将深入探讨如何利用SpriteKit和Swift来创建一个2D太空射击游戏。 首先,SpriteKit提供...

    ios7 spritekit 游戏demo

    在iOS开发领域, SpriteKit 是苹果推出的一款强大的2D游戏引擎,特别适合用于构建轻量级到中等复杂度的游戏。随着iOS 7的发布,SpriteKit得到了显著的提升和优化,为开发者提供了更为丰富的功能和更流畅的性能。本...

    ios打飞机 ios 飞机 spritekit 简单的SpriteKit打飞机

    简单的SpriteKit打飞机 利用SpriteKit写的一个简单的打飞机场景,可以发射子弹、移动飞机以及碰撞检测。 利用SpriteKit写的一个简单的打飞机场景,可以发射子弹、移动飞机以及碰撞检测。

    iOS游戏框架Sprite Kit基础教程 Swift版上册

    Sprite Kit是苹果公司为iOS和OS X平台设计的一款强大的2D游戏开发框架,它提供了丰富的图形渲染、物理模拟、动画和交互功能,使得开发者能够轻松地创建出精美的游戏。本教程将深入浅出地介绍如何使用Sprite Kit和...

    GravityZ:我将使用Swift和iOS SpriteKit实现的一款正在进行中的游戏-测试SpriteKit和不同的物理等。

    《Swift与iOS SpriteKit在游戏开发中的应用——以“GravityZ”为例》 在iOS游戏开发领域,Swift语言和SpriteKit框架的结合为开发者提供了强大的工具。本文将深入探讨如何利用Swift和SpriteKit来创建一个名为...

    iOS SpriteKit游戏开发(2D)第一部分

    SpriteKit游戏开发教程,2D方向,示例易懂,适合所有选手

    iOS SpriteKit游戏开发(2D)第二部分

    SpriteKit游戏开发教程,2D方向,示例易懂,适合所有选手

    Orbit7, 在SpriteKit中,开源iOS游戏创建Swift.zip

    Orbit7, 在SpriteKit中,开源iOS游戏创建Swift Orbit7使用 Swift 在SpriteKit中创建的开源iOS游戏https://www.mav3r1ck.iohttps://itunes.apple.com/us/app/orbit-7/id959313456

    IOS 2D游戏开发框架 Spritekit案例

    SpriteKit是苹果公司为iOS、macOS平台设计的一款强大的2D游戏开发框架,它提供了丰富的图形渲染、物理模拟、动画和交互功能,让开发者能够轻松创建高质量的2D游戏。本篇文章将深入探讨SpriteKit的基本概念、核心组件...

    SwiftUI SpriteKit Animation滑动切割效果含源码

    SpriteKit提供了一个完整的游戏开发环境,包括场景(Scene)、精灵(Sprite)、动作(Action)和物理世界(Physics World)。在物理世界中,你可以设置重力、碰撞检测等,这些对于模拟现实世界的动态行为至关重要。...

    iOS 7 Sprite Kit学习demo1

    Sprite Kit是苹果为iOS和OS X平台开发2D游戏提供的一款强大的框架,它在iOS 7中首次引入,极大地简化了游戏开发流程。这个“iOS 7 Sprite Kit学习demo1”是一个非常适合初学者上手实践的例子,通过它,我们可以深入...

    swift-使用SpriteKit实现iOS版本的2048游戏

    在Swift编程环境中, SpriteKit 是一个强大的2D游戏开发框架,专为构建iOS、macOS以及其他Apple平台上的游戏而设计。本教程将详细介绍如何利用SpriteKit来实现一款经典的2048游戏。2048是一款简单却令人上瘾的数字...

    IOS+SpriteKit+烈焰之刃.zip

    《iOS SpriteKit游戏开发:构建“烈焰之刃”传奇马甲包》 在iOS平台上, SpriteKit 是一款强大的2D游戏开发框架,它为开发者提供了丰富的功能和易用的接口,使得创建动画和游戏变得更为简单。本项目“烈焰之刃”是...

    sprite kit"割绳子"游戏详解

    通过本教程,初学者可以学习到使用Sprite Kit和Swift语言开发iOS游戏的基本知识和技能,包括游戏逻辑的构建、物理引擎的应用、场景和交互的实现等。开发“割绳子”这类游戏不仅能够锻炼编程技巧,还能够加深对iOS...

    Sprite Kit编程指南(中文版)

    Sprite Kit是苹果公司开发的一个2D游戏引擎,专门用于iOS和macOS平台的游戏开发。它包括一套用于游戏开发的工具和API,使得开发者能够轻松地创建动画、处理物理碰撞、渲染图形以及添加音效等。通过Sprite Kit,...

    spritekit-swift-physics-bouncing-balls-源码.rar

    "spritekit-swift-physics-bouncing-balls-源码"是一个示例项目,展示了如何在SpriteKit中利用Swift实现物理碰撞的弹跳球效果。 在这个项目中,我们可以学习到以下几个关键知识点: 1. **SpriteKit基本概念**: -...

    swift-iOSSwift游戏-将SpriteKit推送到极限

    在Swift游戏开发的世界中,SpriteKit是一个强大的2D游戏引擎,专为iOS、macOS以及tvOS等Apple平台设计。本教程将深入探讨如何利用Swift和SpriteKit来创建一款动作游戏,让玩家能够生存尽可能多的时间,同时赚取金钱...

Global site tag (gtag.js) - Google Analytics