我正在研究 Godot Engine,我搜索了精灵动画,但我什么也做不了。Unity中有类似的东西吗?在我创建动画之后,如何改变精灵的动画状态?
4 回答
好吧,您需要在这里查看 AnimatedSprite:文档
如果您无法在编辑器中执行此操作,请在 此处查看此平台游戏教程
在 Godot (2d) 中制作动画有两种方法,AnimatedSprites 或 AnimationPlayer。动画文档:http ://docs.godotengine.org/uk/latest/classes/class_animation.html?highlight=animation
使用动画精灵节点
基本上 AnimatedSprites 通过创建包含动画的 SpriteFrames 来工作,按照这种方式,您需要使用分离的精灵帧。简而言之,您只需将图像帧拖放到 SpriteFrame 动画即可。
使用方法:https ://www.youtube.com/watch?v=dew1JdR7TuM
使用动画播放器节点
此节点允许您为 Godot 中的所有内容设置动画(不仅仅是字符帧,还有声音、不透明度、调制颜色等等。这种方式需要关键帧(更类似于 Unity 的方式)。此外,您可以在此处使用整个 SpriteSheet只需在检查器上设置属性即可拆分它们。你可以看看那里:https ://www.youtube.com/watch?v=Z00BfPs0ImM
关于更改动画
目前,您基本上可以将play("animation_name")调用到 AnimatedSprite 或 AnimationPlayer 节点中,但是如果您在 _process(delta) 或 _physics_process(delta) 中使用它,您可能只会让您的动画播放第一个帧,因为它多次调用动画并且直到最后一帧才让它播放。避免这种情况的一种方法是使用 2 个变量:例如,animation 和 old_animation,并进行如下检查
if (animation != old_animation):
animation_node.play(animation)
old_animation = animation
当然还有另一种方法可以做到,这只是一种解决方案。
不幸的是,这些视频是葡萄牙语的,但如果你注意一下,你就可以得到它。你也可以在 youtube 上找到很多关于它的英文视频。
我希望我的解释具有良好的教学效果,并祝 Godot 研究好运!
您可以使用 godot 的内置动画,那里有大量教程,也可以自己制作并以编程方式更改精灵的帧索引:
$Sprite.frame = 1
我建立了自己的系统,因为 godot ui 让我失望了。
如果你这样做,你将需要这个函数来获取经过的时间:
OS.get_ticks_msec()
并从中计算出检查您是否在下一帧上的时间。
我假设您可以在 Node2D 空间中创建 AnimatedSprite。从那里您将需要添加图像。这些可以从您的 Godot 项目文件夹中单独添加,方法是单击 Frames 并选择 New SpriteFrames。如前所述,Kidscancode.org网站提供了一个很好的教程来指导您完成此操作。
我想补充一件事。使用一个 AnimatedSprite,您将创建多个动画,您将通过 $AnimatedSprite.play("animation-name") 调用这些动画,如上文所述。这些动画也可以在AnimationPlayer中进行操作,它可以控制场景中的对象。这将在以后变得很方便,虽然更复杂的是可以访问 AnimatedSprite 对象中的命名动画,并允许您使用内置的动画状态机。我可以在网上找到的所有示例都显示了 AnimationPlayer 操作 Sprite,但它也适用于 AnimatedSprite 对象。