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

Godot 水平和垂直翻转动画精灵的单个帧,godot,gdscript,Godot,Gdscript,我有4个(0-3个动画帧)硬币动画的不同图像,具有不同的旋转状态。我想通过添加另外2帧(4-5帧)使其看起来像是旋转的,从而使其看起来像是旋转的。在目前的情况下,硬币旋转180度,然后回到原来的位置。我只想垂直翻转第4帧和第5帧。如何在不制作新的冗余PNG的情况下实现这一点 我知道在这种情况下制作2个新的PNG并不是什么大问题,但如果我有更多的帧和/或更大的精灵,它可能会在未来的项目中产生显著的不同 我在想,当动画达到最后的名气时,你可以让它水平翻转,但是这意味着你必须省略第4帧和第5帧以避免重

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

我知道在这种情况下制作2个新的PNG并不是什么大问题,但如果我有更多的帧和/或更大的精灵,它可能会在未来的项目中产生显著的不同


我在想,当动画达到最后的名气时,你可以让它水平翻转,但是这意味着你必须省略第4帧和第5帧以避免重复,但它看起来仍然很奇怪,因为第3帧会直接跳回到第0帧。我试着用不同的顺序来处理这个问题,但是我所有的解决方案要么导致重复的帧,要么导致丑陋的跳过。也许你能解决我不能解决的问题

不幸的是,尽管Godot支持动画播放器节点的向后播放功能,但在动画精灵方面却没有这样的功能。太糟糕了,因为这可能会解决你的问题

现在,我认为你最好的选择是做你一直试图避免的事情。。自己翻转精灵图像并将其添加为动画帧,或者制作包含翻转精灵的单独动画,并让它们在最后一帧后分别来回切换。对于超大型项目来说,这可能需要做很多工作,但如果没有动画精灵的某种向后播放功能,我认为这一次尝试找到解决方法是不值得的

当然,如果我错了,我欢迎社会人士作出任何纠正


祝你好运。

我在想,当动画达到最后的名气时,你可以让它水平翻转,但是这意味着你必须省略第4帧和第5帧以避免重复,但它仍然看起来很奇怪,因为第3帧会直接跳回到第0帧。我试着用不同的顺序来处理这个问题,但是我所有的解决方案要么导致重复的帧,要么导致丑陋的跳过。也许你能解决我不能解决的问题

不幸的是,尽管Godot支持动画播放器节点的向后播放功能,但在动画精灵方面却没有这样的功能。太糟糕了,因为这可能会解决你的问题

现在,我认为你最好的选择是做你一直试图避免的事情。。自己翻转精灵图像并将其添加为动画帧,或者制作包含翻转精灵的单独动画,并让它们在最后一帧后分别来回切换。对于超大型项目来说,这可能需要做很多工作,但如果没有动画精灵的某种向后播放功能,我认为这一次尝试找到解决方法是不值得的

当然,如果我错了,我欢迎社会人士作出任何纠正


祝你好运。

这是完成任务的一种方法

在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

这是完成任务的一种方法

在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

你可能已经知道了这一点,因为我知道这个屏幕截图来自我的课程,因为我现在正在做,这将在课程后面解释(添加spikeman敌人时)。但对于那些不知道的人来说,可以通过添加AnimationPlayer和处理AnimatedSprite的动画翻转属性的新动画轨迹来解决这个问题。然后你必须在最后两个重复的帧上设置flip_h。

你可能已经知道了这一点,因为我知道这个屏幕截图来自我的课程,因为我现在正在做,这将在课程后面解释(添加spikeman敌人时)。但对于那些不知道的人来说,可以通过添加AnimationPlayer和处理AnimatedSprite的动画翻转属性的新动画轨迹来解决这个问题。然后,您必须在最后两个重复帧上设置flip_h