[SceneKit专题]16.Actions动作

说明

本系列文章是对<3D Apple Games by Tutorials>一书的学习记录和体会此书对应的代码地址

SceneKit系列文章目录

动作可以让你操作节点的位置,缩放,旋转和透明度.比如左滑,场景中的小猪向左转并跳一步.
基本分类有四种:Move(移动), Scale(缩放), Rotate(旋转)和Fade(透明渐变).还有两种特殊的动作:Sequence(序列,即顺序执行)和Group(组,即同时执行).
** 注意,关于物理形体physics body**
当需要物理引擎来控制节点的移动和旋转时,应设置为dynamic.如果不需要移动,但仍能参与物理模拟,应设置为static.如果你既想控制某些节点的移动和旋转,同时仍能参与物理模拟,应设置为kinematic.

Move actions移动动作

QQ20170416-150550@2x.png
  • Move Action:在当前位置上移动一段
  • MoveTo Action:移动到指定位置,与当前位置无关


    QQ20170416-165013@2x.png

Scale actions缩放动作

QQ20170416-150642@2x.png
  • Scale Action: 在当前缩放基础上缩放.
  • ScaleTo Action:缩放到指定比例,与当前比例无关


    QQ20170416-165026@2x.png

Rotate actions旋转动作

QQ20170416-150736@2x.png
  • Rotate Action:在当前旋转基础上再旋转
  • RotateTo Action:旋转到指定角度,与当前旋转无关
  • RotateTo Action (Shortest):旋转到指定角度,走最短路径
  • RotateBy Axis Angle Action:绕某个轴旋转
  • RotateTo Axis Angle Action:绕某个轴旋转到指定角度


    QQ20170416-165038@2x.png

Fade actions褪色动作

QQ20170416-152151@2x.png
  • FadeOut Action:淡出,从当前透明度渐渐变完全透明
  • FadeIn Action:淡入,从当前透明度渐渐显示出来,完全不透明
  • FadeOpacityTo Action:改变不透明度到指定值


    QQ20170416-165118@2x.png

Sequenced and grouped actions序列和组动作

序列和组都是一系列动作的组合,可以让动作更复杂


QQ20170416-151058@2x.png
  • Actions:左侧的每一个都是一个动作,上跳,下落,右移,右转
  • Sequence:蓝色区域内就是序列,上跳动作执行1秒完成后,执行下落动作,按顺序
  • Group:红色区域就是组,将会并发同时执行


    QQ20170416-151245@2x.png

Linear线性,Ease-In渐入,Ease-Out渐出,East-In-Out渐入渐出

QQ20170416-151324@2x.png

The action editor动作编辑器

QQ20170416-151351@2x.png
  • Expand/Collapse Action Editor:展开/收缩动作编辑器
  • Timeline:时间线
  • Time Cursor:时间游标
  • Time Zoom:时间缩放
  • Drag&Drop Actions:拖放动作

动作创建

拖放一个旋转动作到节点,设置开始时间和持续时长,指定为绕z轴旋转


QQ20170416-151418@2x.png

右击选中Create Loop,创建循环


QQ20170416-151432@2x.png

选中∞无限循环,当它变蓝时就好了. 不要点X,那会取消
QQ20170416-151451@2x.png

拖动游标预览效果


QQ20170416-151504@2x.png

代码添加动作

// 1.时长
let duration = 0.2
// 2.上下移动动作
let bounceUpAction = SCNAction.moveByX(0, y: 1.0, z: 0, duration:
duration * 0.5)
let bounceDownAction = SCNAction.moveByX(0, y: -1.0, z: 0, duration:
duration * 0.5)
// 3.时间模式
bounceUpAction.timingMode = .EaseOut
bounceDownAction.timingMode = .EaseIn
// 4.动作序列
let bounceAction = SCNAction.sequence([bounceUpAction, bounceDownAction])
// 5.四周移动动作
let moveLeftAction = SCNAction.moveByX(-1.0, y: 0, z: 0, duration:
duration)
let moveRightAction = SCNAction.moveByX(1.0, y: 0, z: 0, duration:
duration)
let moveForwardAction = SCNAction.moveByX(0, y: 0, z: -1.0, duration:
duration)
let moveBackwardAction = SCNAction.moveByX(0, y: 0, z: 1.0, duration:
duration)
// 6.旋转动作
let turnLeftAction = SCNAction.rotateToX(0, y: convertToRadians(-90), z:0, duration: duration, shortestUnitArc: true)
let turnRightAction = SCNAction.rotateToX(0, y: convertToRadians(90), z:
0, duration: duration, shortestUnitArc: true)
let turnForwardAction = SCNAction.rotateToX(0, y: convertToRadians(180),
z: 0, duration: duration, shortestUnitArc: true)
let turnBackwardAction = SCNAction.rotateToX(0, y: convertToRadians(0),
z: 0, duration: duration, shortestUnitArc: true)
// 7.动作组
jumpLeftAction = SCNAction.group([turnLeftAction, bounceAction,
moveLeftAction])
jumpRightAction = SCNAction.group([turnRightAction, bounceAction,
moveRightAction])
jumpForwardAction = SCNAction.group([turnForwardAction, bounceAction,
moveForwardAction])
jumpBackwardAction = SCNAction.group([turnBackwardAction, bounceAction,
moveBackwardAction])
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 156,423评论 4 359
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 66,339评论 1 289
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 106,241评论 0 237
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,503评论 0 203
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 51,824评论 3 285
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,262评论 1 207
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,615评论 2 309
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,337评论 0 194
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 33,989评论 1 238
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,300评论 2 240
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 31,829评论 1 256
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,193评论 2 250
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 32,753评论 3 230
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 25,970评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,708评论 0 192
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,295评论 2 267
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,207评论 2 258

推荐阅读更多精彩内容