我有 4 个(0-3 个动画帧)不同的硬币动画图像,它们旋转的不同状态。我想通过添加另外 2 帧 (4-5) 让它看起来像在旋转,让它看起来像在旋转。在当前情况下,它看起来像硬币旋转 180 度并回到原来的位置。我只想垂直翻转第 4 帧和第 5 帧。我如何在不制作新的冗余 png 的情况下实现这一目标?
我知道在这种情况下制作 2 个新的 png 并不是什么大问题,但如果我有更多的帧和/或更大的精灵,它可能会对未来的项目产生重大影响。
我在想你可以让动画在达到最后一个成名时水平翻转,但这意味着你必须省略 #4 和 #5 以避免重复,但它仍然看起来很奇怪,因为第 3 帧会直接跳回帧#0。我尝试考虑可以放置精灵帧的不同顺序来清理它,但我所有的解决方案要么导致重复帧,要么导致丑陋的跳过。也许你能解决我不能解决的问题。
不幸的是,虽然 Godot 支持 animation_player 节点的 play_backwards 功能,但对于 animated_sprite 却没有这样的功能。太糟糕了,因为这可能会解决您的问题。
现在,我认为你最好的选择是做你试图避免的事情..自己翻转精灵图像并将它们添加为动画帧,或者制作一个包含翻转精灵的单独动画并让它们在最后一个之后来回切换帧,分别。对于超大型项目来说,这可能需要做很多工作,但是如果没有针对动画精灵的某种 play_backwards 功能,我认为这次尝试寻找解决方法是不值得的。
当然,如果我错了,我欢迎社区的任何纠正。
祝你好运。
这是完成任务的一种方法。
godot write的ready函数里面
#used to store frame value
var frame = 0
在您使用的每帧运行的函数中写入:
frame += 1
#resets the value representing the current frame
if frame > 5:
frame = 0
if frame == 4 || frame == 5:
#this should be whatever function you use to flip the sprite vetically
flip_h = true
else:
#this should be whatever function you se to flip the sprite horizontally
flip_h = false
您可能已经知道这一点,因为我知道这个屏幕截图来自 udemy 课程,因为我现在正在这样做,这将在课程的后面进行解释(当添加spikeman 敌人时)。但是对于那些不知道的人,可以通过添加一个AnimationPlayer并添加处理AnimatedSprite的动画flip_h属性的新动画轨道来解决。然后你必须在最后 2 个重复的帧上设置 flip_h。