翻转动画精灵的水平和垂直单帧

时间:2019-04-14 21:59:45

标签: godot gdscript

我有4个(0-3个动画帧)硬币动画的不同图像,其旋转状态不同。我想通过添加另外2帧(4-5)使其旋转来使其看起来像旋转。在当前情况下,硬币看起来旋转了180度,然后又回到了原始位置。我只想垂直翻转第四帧和第五帧。如何在不制作新的冗余png的情况下实现这一目标?

在这种情况下,我知道制作2个新png并不是什么大问题,但是如果我有更多帧和/或更大的sprite,则可能会在以后的项目中产生重大影响。

My current animation frames

3 个答案:

答案 0 :(得分:1)

我在想,您可以使动画在到达最后一个名声时水平翻转,但这意味着您将不得不省略#4和#5以避免重复,但是由于第3帧会跳过,因此它看起来仍然很奇怪。直接回到第0帧。我尝试过考虑可以将子画面帧放置在其中的顺序不同,但是我所有的解决方案要么导致帧重复,要么导致丑陋的跳过。也许您可以解决我无法解决的问题。

不幸的是,尽管Godot支持animation_player节点的play_backwards功能,但当谈到animation_sprite时却没有这种功能。太糟糕了,因为这很可能会解决您的问题。

就目前而言,我认为最好的选择是做您想避免的事情。自己翻转精灵图像并将其添加为动画帧,或者制作一个包含翻转精灵的单独动画,并使其来回切换在最后一帧之后。对于超大型项目而言,这可能需要做很多工作,但如果没有用于动画精灵的某种play_backwards功能,那么我认为这次寻找解决方法的努力并不值得。

当然,如果我错了,我将欢迎社区中的任何纠正。

祝你好运。

答案 1 :(得分:0)

这是完成任务的一种方式。

在godot的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

答案 2 :(得分:0)

您可能已经知道这一点,因为我认得此屏幕截图来自的 udemy 课程,因为我现在正在这样做,这将在课程后面(添加秒杀敌人时)进行解释。但是对于那些不知道的人来说,可以通过添加一个 AnimationPlayer 并添加处理 AnimatedSprite 的动画 flip_h 属性的新动画轨道来解决。然后你必须在最后 2 个重复的帧上设置 flip_h。