06.sprite_kit前瞻之创造“真实”的世界

Sprite kit前瞻之创造“真实”的世界

注:本文是前瞻的最后一篇文章,我们的征程即将开启,当我初学swift开始,同样迷茫,同样前途未卜。回想起初的一个月,初识swift,无从入手;之后看视频教学入门;再到外文书的阅读提升,当然也免不了每天码代码,学习人家的demo;现在还在学习中,感觉熬过那段时间之后旅途顺畅了很多,再此与大家共勉!

正文:

前文提及节点树这一概念,俗语说“开枝散叶”,想象下,每一次“开枝”就有可能产生多个新的节点,把最初的那个“枝”(孤零零的一根不开叉的树枝)当做根节点,之后“开枝”过程就是在其上增加新的节点,而新的节点回过头来说必定有其父节点。这权当是对前文的补充。

尽管我们能够精确控制节点在场景的位置(position),说的通俗一点就是“hey Scene,请帮我把那架小飞机放置到坐标点(100,100)的位置”。然后同样按照盖套路布置好敌机以及一些背景图案等等,飞机会发射子弹,这个实现方式可以是这样,设定好产生子弹的频率,比如0.3秒产生一颗,每一帧更新时需要修改子弹的y 坐标,这样就让子弹飞一会但是,就算子弹触碰到了敌机,也是穿其而过,敌机就好似开了无敌神圣不可侵犯!另外为了让游戏看起来更真实,子弹刚发射时有加速度,像这种物理问题比比皆是,当然这种小游戏不需要考虑那么多,我只是想引出物理世界这一话题。

在真实的世界中,物体具有质量(mass),摩擦力,光滑度等属性,篮球从高处落下会反弹,最终静止在地面上。学过物理应该知道,我们可以使用公式和自定义actions来模拟,但是sprite kit框架中已经集成了该系统(物理引擎?,貌似是用c++写的,不得不承认c++牛逼),你只需要创造一个physics bodies(SKPhysicsBody),将其附着到节点上合二为一放置于场景即可。如何定义一个物理体呢?可以从形状(shape),大小(size),质量(mass)和其他一些物理特性来构建。至于场景如何定义全局特性来模拟一个真实的世界呢?答案是SKPhysicsWorld对象,和SKPhysicsBody一样,但是前者是和SKScene对象配合。物理世界中,我们可以定义重力,速度等,非常牛逼!

当物理体(本质就是一些node,但是被附上了PhysicsBody属性)被放置于场景当中,场景作为掌管者,将对这些物体上附着的物理属性进行仿真。像摩擦力和重力这两个力,将会自动被应用(其他力比如额外申明才能被应用),假如你将一个有质量的篮球放置到一定高度,由于重力作用而会掉落到地面!当然我们可以自定义一块区域(field称之为 SKFieldNode,切记任何东西你都可以看做一个节点,不管是你的角色还是游戏背景图片!),这个区域中我们自定义一个物理世界,比如我想这个世界重力减半,没有摩擦力,水平来个推力等,假如你把一个物体放置其中,区域开启自动仿真,由于有力的作用产生一个加速度,再者也许有多个物体作用,产生了碰撞,牛逼的它自然也能模拟出来!仿真结束之后,各个节点(物体)位置以及角度将会被更新。

当然实际开发中,你并不想场景中的所有物体都相互作用,因此你可以通过明确设定作用关系来解决。

内容略多,以后讲到了再详细论述

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值