[Kotlin写游戏教程八]继续学习动画特效

[Kotlin写游戏教程八]继续学习动画特效

作者:丫丫    浏览次数:155    2021-06-15 15:42:02

前一篇已经学会用while(true)+delay以及addFixedUpdater跟addHrUpdater来制作一些简易的动画特效,不过KorGE还有提供其他方法来更容易实现动画特效,分别是Tweens跟Animator,就让笔者带大家一起来学习了。

Tweens
依照字面上的理解,Tween意思是8~10岁的少年,好像也有说法是来是从between来的,其实主要表达就是两者之间的意思,而游戏也有称作围"补间动画"。
KorGE也针对了View物件提供了Tween这个方法,也就是View.Tween,据官方说法是让你有magic的感受!
确实使用起来也真的非常简单,以官方提供的范例是将你的物件进行水平移动,只要给予物件的属性的初始跟结束的数值,再设定更新频率,就能达成效果了。

view.tween(view::x[10.0, 100.0], time = 1000.milliseconds)
所以我们可以用tween的方式改写前一篇用addFixedUpdater里头实作的alpha值变化,直接一行搞定。

tapString.tween(tapString::alpha[0.0, 1.0], time = 1000.milliseconds)
Animator
如果你不想把你的动画行为分散地写在物件上,你可以试试看用Animator来将这些动态行为写在一起:

animate {
parallel {
tapString.moveToWithSpeed((image.scaledWidth) / 2 - (textString.count() * fontSize) / 4, (image.scaledHeight - image.scaledHeight / 4), 300.0, Easing.EASE_IN_OUT)
}
parallel{
tapString.alpha(0.0, time = 1000.milliseconds, easing = Easing.LINEAR)
if (tapString.alpha == 0.0) {
tapString.alpha = 1.0
}
}
}
这里的parallel代表一个Animator,使用moveToWithSpeed,将tapString的y座标从原点用300毫秒移动速度到指定位置。这里会等第一个Animator动作完后,才会进行到下一个parallel,也就是对tapString做alpha值的变化。tapString.alpha(0.0, time = 1000.milliseconds, easing = Easing.LINEAR)。
执行后看到的结果跟我们几乎一样呢!!

总结
动画特效的写法有很多种,光是让物体移动就能有这么多招式,如果你去看Animator.kt里还有满多可以使用的方法,像是moveTo、scaleTo、rotateTo等等。希望大家都能多去尝试利用各种组合,试出你想要在游戏中表现的特效!

上一篇:[Kotlin写游戏教程七]制作简单的动画效果
下一篇:[Kotlin写游戏教程九]使用SpriteAnimations-外星人动起来了!