我有4个(0-3个动画帧)硬币动画的不同图像,其旋转状态不同。我想通过添加另外2帧(4-5)使其旋转来使其看起来像旋转。在当前情况下,硬币看起来旋转了180度,然后又回到了原始位置。我只想垂直翻转第四帧和第五帧。如何在不制作新的冗余png的情况下实现这一目标?
在这种情况下,我知道制作2个新png并不是什么大问题,但是如果我有更多帧和/或更大的sprite,则可能会在以后的项目中产生重大影响。
答案 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。