Sprite Kit Swift游戏开发新手指导手册(4)

这一步我们开始学习如何创建怪兽精灵

为了让我们的游戏更加有趣,我们需要创建一些能够移动的怪兽精灵,那么,让我们在屏幕稍微偏右的地方创建一些怪兽精灵,然后给设置一个动作,让它们从右向左移动;

我们把一下的方法添加到GameScene.swift的文件中;

func random() -> CGFloat {
    return CGFloat(Float(arc4random()) / 0xFFFFFFFF)
}

func random(#min: CGFloat, max: CGFloat) -> CGFloat {
    return random() * (max - min) + min
}

func addMonster() {

    //创建一个精灵
    let monster = SKSpriteNode(imageNamed: "monster")

    //设置精灵应该放置的Y坐标
    let actualY = random(min: monster.size.height/2, max: size.height - monster.size.height/2)

    //沿着屏幕的右边缘放置精灵
    //根据上方随机得出的Y坐标放置精灵
    monster.position = CGPoint(x: size.width + monster.size.width/2, y: actualY)

    //将怪兽精灵添加到场景中
    addChild(monster)

    //定义怪兽的移动速度
    let actualDuration = random(min: CGFloat(2.0), max: CGFloat(4.0))

    //创建怪兽的动作
    let actionMove = SKAction.moveTo(CGPoint(x: -monster.size.width/2, y: actualY), duration: NSTimeInterval(actualDuration))
    let actionMoveDone = SKAction.removeFromParent()
    monster.runAction(SKAction.sequence([actionMove, actionMoveDone]))

}

我们需要做一些简单的计算来决定我们需要在哪里创建怪兽精灵,放置精灵的位置,然后和放置忍者精灵的方式一样把怪兽精灵放到屏幕中;

但是这里有一个新的东西就是创建一个动作,Sprite Kit内部提供了一些非常方便的操作方法来帮助我们改变精灵的状态.比如说移动一个精灵,旋转一个精灵,让精灵隐藏,让精灵显示等等,在这里我们为怪兽精灵使用了三个动作

SKAction.moveTo(_:duration:): 我们使用这个动作将精灵从屏幕沿着直线移动到屏幕的左边,注意这里的duration参数可以让我们设置移动的时间需要多久,我们在这里随机把时间设置为2-4秒吧;

SKAction.removeFromParent():Sprite Kit提供了一个方法使我们能够将一个节点从它的父元素删除,在这里我们使用这个方法将一个看不见的怪兽精灵从场景中移除,因为我们不可能有无限多的怪兽精灵,而且如果不删除设备的内存资源消耗也是非常大的.

SKAction.sequence(_:):序列方法允许我们将一系列的动作同时按照设计的顺序串联起来,这种方法我们就可以先让精灵移动,然后将精灵从场景中移除;

在我们继续之前,我们将创建怪兽精灵的调用方法,为了让我们的游戏更加好玩.让我们一直不断的创建怪兽精灵吧.

我们只需要将以下的代码放到didMoveToView()方法中:

runAction(SKAction.repeatActionForever(
   SKAction.sequence([
      SKAction.runBlock(addMonster),
      SKAction.waitForDuration(1.0)
   ])
))

在这里你使用的一系列动作(我们称之为代码块,使用强大的swift语言,我们可以无缝的使用addMonster()方法),当我们等待一秒钟的时候, 我们又源源不断地重复了这个动作;就是这样,让我们编译运行,现在你就能看到这些怪兽精灵在屏幕上面移动了!

这里写图片描述

查看更多: http://blog.vlian888.com/?p=140

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值