减肥瘦身

 减肥瘦身     |      2020-03-30

以下每个动作坚持20秒,动作之间休息10秒

《真三国无双4》全人物无双攻击速度统计 来源:游戏下载编辑:评论

本文使用的是Xcode8.0,语言是Swift3.0。

1 窄距深蹲

统计的是无双循环式的帧数,越小则攻击速度越快。。扇护卫和老虎的无双没有持续性,所以未进行统计。。

我们绘制好精灵后,精灵只是一张静态的图,作为游戏,我们需要精灵有动作。动作就是开发者相对场景所做的改变的对象,当创建好动作后,只需要告诉精灵运行动作,SpriteKit自动动态的改变精灵的位置等想要精灵执行的动作,直到动作完成。

云顶娱乐app网址 1

下表按照攻击速度从快到慢排列。。

每一个动作是一个不透明的对象,描述你相对场景、精灵等节点做的改变。动作由SKAction类表示,各种类型的动作都使用类方法来实例化,动作可以做的常见事情有:

2 平板俯卧撑

女娲 7帧甘宁 10帧小乔 11帧(循环式)/30帧(第一个动作)攻击据点兵 15帧左慈 16帧周泰 18帧祝融 18帧(第一个动作)/19帧(第二个动作)凌统 19帧月英 20帧(循环式)/15帧(第一个动作)星彩 20帧(循环式)/35帧(盾击)周瑜 18帧(第一个动作)/24帧(第二个动作)剑兵 19帧(第一个动作)/23帧(第二个动作)弓护卫/弩护卫 21帧魏延 21帧(第一个动作)/22帧(第二个动作)马超 22帧庞德 23帧剑护卫 23帧孙尚香 20帧(第一个动作)/26帧(第二个动作)黄盖 22帧(第一个动作)/24帧(第二个动作)孙坚/孙权/杖护卫 21帧(第一个动作)/26帧(第二个动作)张飞 23帧(第一个动作)/24帧(第二个动作)夏侯惇 24帧(第一个动作)/23帧(第二个动作)司马懿 24帧(第一个动作)/23帧(第二个动作)赵云 24帧(循环式)/23帧(第一个动作)刘备/董卓/袁绍/文官剑 24帧太史慈 24帧曹丕 21帧(第一个动作)/28帧(第二个动作)曹仁 25帧诸葛亮 25帧曹操 23帧(第一个动作)/27帧(第二个动作)张辽 25帧(第一个动作)/26帧(第二个动作)孙策 26帧吕蒙/立志戟/大众戟 29帧(第一个动作)/23帧(第二个动作)吕布 26帧(循环式)/27帧(第一个动作)女兵 13帧(第一个动作)/40帧(第二个动作)关平 27帧典韦 33帧(第一个动作)/21帧(第二个动作)伏羲 27帧(循环式)/38帧(第一个动作)/31帧(第二个动作)枪护卫 27帧(第一个动作)/28帧(第二个动作)许诸 28帧(循环式)/29帧(第一个动作)黄忠/夏侯渊/立志剑/武官剑 29帧(循环式)/5帧(第一个动作)关羽 29帧(循环式)/11帧(第一个动作)庞统 29帧(循环式)/25帧(第一个动作)张角 29帧戟兵 17帧(第一个动作)/41帧(第二个动作)陆逊 19帧(第一个动作)/39帧(第二个动作)防御据点兵 34帧(第一个动作)/24帧(第二个动作)姜维/立志枪/大众枪 30帧(循环式)/23帧(第一个动作)甄宓 30帧徐晃 30帧(循环式)/32帧(第一个动作)孟获 46帧(第一个动作)/24帧(第二个动作)貂婵 35帧(循环式)/41帧(第一个动作)枪兵 22帧(第一个动作)/54帧(第二个动作)大乔 40帧(循环式)/29帧(第一个动作)张郃 44帧

  • 改变节点的位置和方向
  • 改变节点的尺寸或缩放属性
  • 改变节点的可视性和透明度
  • 改变精灵节点的内容,以便它可以通过一系列的纹理动起来
  • 给精灵节点着色
  • 播放简单的声音
  • 从节点树种移除一个节点
  • 自定义动作调用一个块或调用对象上的选择器

云顶娱乐app网址 2

一旦动作被创建,动作的类型就不能被改变,动作具有不可变的性质。所以,当游戏中要反复使用相同的动作时,可以创建出一个动作实例,当有节点需要执行动作时直接使用。动作分为瞬时和非瞬时,瞬时动作表示在一帧动画内开始并完成,非瞬时则会有一个动画效果的持续时间,动画会一帧一帧执行。

3 后踢腿

最简单的动作创建方式:

云顶娱乐app网址 3

//飞船添加一个往下飞行的动作 func addAction(ship: SKSpriteNode) { let move = SKAction.moveTo(y: 0, duration: 1) ship.run }

4 自行车

云顶娱乐app网址 42017-02-07 10_27_23.gif

云顶娱乐app网址 5

动画有一个持续时间,duration表示持续的时间。当动作完成后,动作就会从节点中移除,无需手动移除。

5 侧弓步

可以在任何时候运行动作,但是如果运行动作时,场景正在处理动作,新的动作可能不会立即执行。

云顶娱乐app网址 6

一个节点可以同时运行多个动作,即使那些动作在不同时间执行,场景会自动跟踪每个动作要多久完成,并且计算出动作对节点产生的影响。所以,如果设置一个大小相等,方向相反的移动动作,则节点会保持不变。

6 触脚尖

由于动作是和场景绑定的,节点只有呈现时,节点的动作才会被处理。所以,我可以创建一个节点,并且设置好动作,等到需要的时候,再添加到场景,一旦添加到场景,则会自动执行动作。

云顶娱乐app网址 7

如下:

7 背屈伸

//添加一个新的飞船,自带放大动作,当点击屏幕后,将该飞船添加到场景,添加后,飞船会自动执行放大动作。func createScaleShip() { scaleShip = createShip() let scale = SKAction.scale(to: 2, duration: 1) scaleShip.run }

云顶娱乐app网址 8

云顶娱乐app网址 91.gif

8 俄罗斯转体

如果一个节点正在运行任何动作hasActions=true

云顶娱乐app网址 10

可以取消节点正在运行的动作,调用节点的removeAllActions()方法即可。如果节点正在运行动作,则动作会立马取消,已经做出的改变保持不变,但是不会执行后续的改变。

节点的该方法run(action: SKAction, completion: () -> Void)会在动作执行结束后,执行回调,如果动作被移除,则回调不会执行。

通常情况下,大家不会移除全部动作,可能只是移除掉某一个动作,这时,我们就应该给动作命名,然后通过该名称来识别动作,然后对动作执行启动、移除、更换等操作。

run(action: SKAction, withKey: String)该方法运行动作,会给动作添加上名称标识,如果已经存在相同名称,则该已经存在的动作会被先移除。action(forKey: String)该方法用于确定,是否已经有一个动作正在使用该名称。removeAction(forKey: String)该方法用于移除动作。

//我们在点击方法内,给移动飞船添加一个带名称Move的动作,每次点击后会移动到点击的位置,同时,如果飞船正在移动,则会移除上一次正在移动的动作,执行新动作。override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) { let touch = touches.first let move = SKAction.move(to: touch!.location, duration: 1) moveShip.run(move, withKey: "Move")}

云顶娱乐app网址 112.gif

上面是单个动作的用法,SpriteKit提供了很多的单个动作类型,但很多复杂的动作,就需要将一个一个单个动作组合到一起使用。复合动作有三种类型:

  • 序列动作:多个子动作组成一个序列,依次执行。
  • 组动作:多个子动作组成一个组,在同一时间执行。
  • 重复动作:一个子动作,重复不停的执行。
//添加一个序列动作的飞船 func addListAction() { let listShip = createShip() listShip.position = CGPoint(x: 0, y: 0) addChild let move = SKAction.move(to: CGPoint(x: view!.frame.width/2, y: view!.frame.height/2), duration: 1) let zoom = SKAction.scale(to: 4, duration: 1) let wait = SKAction.wait(forDuration: 1) let fade = SKAction.fadeOut(withDuration: 1) let remove = SKAction.removeFromParent() let sequence = SKAction.sequence([move,zoom,wait,fade,remove]) listShip.run }
  • wait:延时,控制序列的定时。
  • removeNode:瞬时动作,不会花费时间来执行。

云顶娱乐app网址 123.gif

组动作表示一组同时执行的动作集合。

//添加组动作的飞船 func addGroupAction() { let groupShip = createShip() groupShip.position = CGPoint(x: 0, y: 0) addChild(groupShip) let move = SKAction.move(to: CGPoint(x: view!.frame.width, y: view!.frame.height), duration: 1) let rotate = SKAction.rotate(toAngle: CGFloat, duration: 1) let group = SKAction.group([move,rotate]) groupShip.run }
  • 在组动作执行时,开始是同时开始,但是结束要等到最后一个动作执行后才会结束。

云顶娱乐app网址 134.gif

重复动作允许循环另一个动作,所以可以被重复执行多次或者无限次。

//添加重复动作 func repeatAction() { let repeatShip = createShip() repeatShip.position = CGPoint(x: view!.frame.width/2, y: view!.frame.height/2+100) addChild(repeatShip) let fadIn = SKAction.fadeIn(withDuration: 0.5) let fadOut = SKAction.fadeOut(withDuration: 0.5) let list = SKAction.sequence([fadIn, fadOut]) let repeatA = SKAction.repeatForever repeatShip.run }

云顶娱乐app网址 145.gif

重复动作,组动作,序列动作之间是可以组合使用的,就是说组动作内可以包含组动作、序列动作、重复动作的组合。

默认情况下,动作的持续时间内,动画是线性变化的,但是可以调整:

  • timingMode属性可以选择动作模式,比如开始快速动作,后续减速。
  • speed属性可以改变动作执行速率,默认为1.0,如果设置成2.0,则动作执行时,速度快一倍。设置0则暂停动作。如果动作内包含别的动作组合,则会全部应用到设置的值。
  • 节点的speed属性与动作的speed属性具有相同效果。

当一个动作会被多次执行时,大家只需要创建一次,然后保存该动作,动作大家可以保存到如下位置:

/** An optional dictionary that can be used to store your own data in a node. Defaults to nil. */ open var userData: NSMutableDictionary?
  • 节点userData属性
  • 父节点userData属性
  • 场景的userData属性
  • 子类的userData属性

多个节点的动作可以同时执行,他们是互不干扰的。

云顶娱乐app网址 152017-02-07 13_24_07.gif

通过上面的讲解,我们可以随心所欲的设置自己想要的动作,达到想要的效果,但是有一点需要注意,创建并执行动作是有成本的,如果打算在动画的每一帧都改变节点的属性,而这些变化在每一帧都需要重新计算,那么最好的办法是直接改变节点,而不使用动作。

本文代码: