大熊猫猪侯佩 (︶^︶)

hopy是一只贪吃贪睡爱鹅鹅的大熊猫猪

SpriteKit游戏如何一步一步重构在场景中增加金币动画(二)

上一篇我们迅速构建了一个生成金币的原型,现在我们需要进一步完善我们的功能。首先,我们需要让小飞机碰到金币不会爆炸,稍后我们让“金币”更像一个金币 ;)现在飞机的物理对象设置如下:player.physicsBody = SKPhysicsBody(texture: playerTexture, s...

2017-05-18 08:13:18

阅读数 1496

评论数 0

SpriteKit游戏如何一步一步重构在场景中增加金币动画(一)

一个类似flappy bird的游戏,作者基本为我们实现了所有有趣的东东,不过为了更富趣味性,我们再加点料:在场景中自动生成一些金币。运行原来的游戏画面如下:下面我来带领大家一步一步把功能完善成型 ;)首先我们写一个小的coinsCreate方法,简单测试一下原型是否可行。在写这个方法之前请允许我...

2017-05-18 06:33:53

阅读数 1293

评论数 0

SpriteKit可摧毁物理场景的进一步完善

例子举了一个早期DOS下的双人游戏,类似于百战天虫类型。不过有趣的是游戏中实现了可摧毁的物理场景,而且只用了很少的代码:游戏实现起来十分巧妙和简单,利用了CoreGraphic中的clear混合模式,将香蕉炸弹以中心位置的纹理全部消除,从而实现“摧毁”效果。游戏中为建筑物单独创建一个类,继承于SK...

2017-05-02 08:13:55

阅读数 2424

评论数 4

SpriteKit对于“子弹”物体的模拟

Second, SpriteKit uses a number of optimisations to help its physics simulation work at high speed. These optimisations don't work well with small, f...

2017-05-01 16:40:49

阅读数 1110

评论数 0

SpriteKit小球被旋涡吞噬动画的进一步改进

App首先找到map文件,然后将场景地图载入游戏。map是一个人可读的ASCII字符文件,每个单元是一个“瓦块”,在cocos2d中对瓦块地图有非常好的的支持,不过在SpriteKit中,至少目前为止瓦块地图功能还不是那么太丰富。不管怎样把,地图中游戏元素分为star,旋涡和终点几种。当playe...

2017-04-28 15:23:30

阅读数 2616

评论数 0

SpriteKit在游戏中模拟一个按钮

首先我们需要将在游戏中创建一个初始化方法initGame,我们将原来在didMove方法中的部分代码移至该方法中:func initGame(){ if gameTimer != nil{ gameTimer.invalidate() ...

2017-04-26 19:36:58

阅读数 1483

评论数 0

HWS中SpriteKit教程实际运行错误的调整

Hacking With Swift(以下简称hws)是一本以独特视角展示Swift编程乐趣的书籍,1000+页也算大部头了…其中作者按照UIKit,SpriteKit,Tech的顺序循序渐进的将iOS编程的奥秘逐一呈现出来,非常棒!但是初学者按照其中的SpriteKit代码实际运行时会发现App...

2017-04-19 21:22:50

阅读数 846

评论数 0

SpriteKit中节点存储个性数据的办法

我们知道大多数情况下,我们可以在SKNode实例的name属性中添加一些个性数据,不过一来只能使用一次,如果还有其他数据就无解了,二来只能存放String类型,如果还要存放其他类型呢?还是无解!不过不知各位是否注意,其实SKNode还提供一个非常有用的属性,可以用它存放任意数据类型,它就是user...

2017-04-15 16:35:06

阅读数 894

评论数 0

SpriteKit中Node数量只增不降的原因和解决

上篇 SpriteKit代码动态调整sks文件中粒子的颜色 博客中的App,运行中发现场景中的Node数量不断在增多,并没有减少,只见内存占用不断变大,虽然增长幅度很小,但强迫症伤不起…只有一个可能,Node没有被释放!检查代码发现,动态生成的Node只有小球和粒子效果,将粒子产生的代码注释掉后发...

2017-04-15 16:26:36

阅读数 828

评论数 0

SpriteKit代码动态调整sks文件中粒子的颜色

在Xcode中我们可以很方便的使用粒子模板制作粒子,然后保存为sks文件,这样我们随时就可以在代码中使用它们了:if let fireParticles = SKEmitterNode(fileNamed: "FireParticles"){ //do anything...

2017-04-15 15:17:19

阅读数 2482

评论数 0

SpriteKit改变Node锚点其物理对象位置不正确的解决

在创建Node的物理对象后,默认情况下物理对象和Node的实际边界对应的很好,因为此时Node的默认锚点是其中心位置即(0.5,0.5),不过如果我们改变了Node的锚点,就会发现其物理边界还是保持原来的位置,这可不是我们想要的结果:let bouncer = SKSpriteNode(image...

2017-04-14 10:27:40

阅读数 2081

评论数 0

SpriteKit:开启物理逐像素(Per-Pixel)碰撞检测后发现的问题及解决(续)

正传传送门:SpriteKit:开启物理逐像素(Per-Pixel)碰撞检测后发现的问题及解决之后还是发现一个小问题,就是虽然player可以正确处理碰撞scoreDetect出发点和其他障碍物,但是由于启用了Per-Pixel,还是会发生多次接触的情况,这时玩家的得分就会被多次累加!相关代码如下...

2016-11-04 11:20:55

阅读数 812

评论数 0

SpriteKit:开启物理逐像素(Per-Pixel)碰撞检测后发现的问题及解决

下面是一个开源的iOS小游戏,类似于 Flappy Bird,玩家需要不停点击屏幕让小飞机从峭壁中穿过,如果飞机撞上峭壁或地面游戏宣告结束,否则每穿过一次峭壁,玩家加一分.因为只是飞机和其他任何物理对象碰撞,而其他物理对象相互之间均不会发生碰撞.所以原作者将飞机的接触掩码(contact mask...

2016-11-04 11:01:16

阅读数 1036

评论数 0

SpriteKit:模拟器中播放效果音有延时的解决办法

以下代码在模拟器(Xcode 8.1 + iPhone7)中运行会在第一次播放效果音时有半秒到1秒(甚至更长!)的延时,随后再播放就没有延时了:let sound = SKAction.playSoundFileNamed("explosion.wav", waitForCom...

2016-11-03 16:46:02

阅读数 1214

评论数 0

SpriteKit中Scene中物理世界属性speed

SpirteKit中Scene拥有一个speed属性.所有SpriteKit的节点可以有附加其上的actions,并且默认他们全部以实时运行—–也就是说,动作中的1秒等同于真实时钟里的1秒.这个speed属性是一个时间的倍乘器,让你可以调整附加在节点上的动作应该运行多快.默认是1.0(真实时钟),...

2016-11-03 14:09:51

阅读数 853

评论数 0

SceneKit一个3D场景角色的代码重构

SuperSpaceMan3D是一个以SceneKit为基础的小游戏项目,作者展示了用SceneKit开发3D游戏的强大威力.不过在实际运行时会发现有一些小bug,这里我们依次尝试将其修复首先,当spaceman接触到敌人的时候,游戏结束,弹出GameOver视图,然后当玩家再触摸屏幕时,开始新的...

2016-07-08 13:29:26

阅读数 2149

评论数 0

SceneKit做一个旋转的地球效果

SceneKit可以用寥寥几行帮你完成很多OpenGL复杂的3D设置代码,下面本猫就带大家完成一个旋转的3D地球的场景.首先需要地球表面图片,将其导入到Xcode中:我们用SceneKit内置的几何球体类创建一个球的实例,并且将地球表面图片应用在球的表面上:let globe = SCNSpher...

2016-07-02 21:29:59

阅读数 6463

评论数 0

SceneKit:简单的3D游戏场景搭建

SceneKit是Apple用来开发休闲3D游戏的框架,不同于底层的OpenGL库,你仅仅需要很少的代码就可以快速看到实际的3D场景效果.下面简单的聊聊搭建一个3D游戏场景需要做的事情.首先你必须用其他3D建模工具生成你需要的3D模型,后缀为dae或者scn,应该还附带一张纹理图片.可以将3D模型...

2016-06-30 20:18:58

阅读数 6741

评论数 1

SpriteKit给游戏弹跳角色添加一个高度标示器

这是一个类似于跳跃涂鸦的小游戏,主角不断吃能量球得到跳跃能量向更高的地方跳跃,如果图中碰到黑洞就挂了…在游戏调试过程中如果能实时知道主角的高度就好了,这将有助于程序猿动态的判断游戏胜败逻辑.你可以用print将高度显示在控制台中,不过这观看起来可不是太方便,索性就让我们把高度标示和游戏主角自己紧密...

2016-06-28 15:29:24

阅读数 2928

评论数 1

SpriteKit:检测当新场景显示以后

Detecting When a New Scene Is PresentedSprite Kit在SKScene类中提供2个可以重载的方法用来检测当一个场景过渡出去或过渡进来的时候.第一个方法是SKScene的willMoveFromView()方法,该方法在一个SKScene被view删除时调...

2016-06-27 12:16:45

阅读数 1867

评论数 0

提示
确定要删除当前文章?
取消 删除