【问题标题】:How can I go to specific frame in animation?如何转到动画中的特定帧?
【发布时间】:2023-03-31 10:35:01
【问题描述】:

在我的游戏中,我创建了一个世界观,让玩家看到从一个关卡到另一个关卡的进展。我所做的是我做了小的“垫脚石”,每个级别之间三个。因此,如果我有三个级别,那么它们之间的 6 个小点。

然后我创建了一个精灵,其中第 1 帧包含 1 个点,第 2 帧包含 2 个点。比如:

0 - - - 0 - - - 0

如果玩家击败了 1 级,它看起来像:

0 - - - 0

所以我已经将我的精灵切片,并添加了一个动画。默认情况下,它会一遍又一遍地播放。我通过将速度设置为 0 来停止此操作。

游戏对象被命名为“leveldots_0”,它是一个带有控制器“leveldots_0”的动画师。我猜动画被命名为“leveldots”,因为它是带有播放图标的资产?我是新手...

所以,在我的相机(所有地方)中,我想在我的更新方法中控制点的哪一帧。例如,我知道玩家是否击败了 1 级,所以我想将点显示到 2 级。

我以为我可以抓住 Animator,我会很高兴:

Animator leveldots = GameObject.Find("leveldots_0").GetComponent<Animator>();

没关系,当我尝试下一个逻辑 (???) 步骤并获取动画本身时,它会变得很无聊:

leveldots.animation["leveldots"].time = 1.0f;

还有我得到错误的地方:

 There is no 'Animation' attached to the "leveldots_0" game object, but a script is trying to access it.

如何获取动画,并转到动画中的帧/时间?

【问题讨论】:

  • 因为你是使用动画师,为什么不创建3个动画。 “Anim 1”只是您的“0”图标,并使用 bool 单向过渡到“Anim 2”,即您的移动点动画。然后将“Anim 2”过渡设置为“Anim 3”并带有退出时间条件。

标签: c# animation unity3d


【解决方案1】:

该错误表示您没有将动画组件附加到您的游戏对象。您正在使用 Animator 组件。 Animator 组件就像一个状态机,您可以在其中将动画与某些参数相关联,还可以在动画之间进行插值。

现在,leveldots.animation 是对该对象的动画组件的引用,而不是动画器。您可以简单地将一个组件更改为另一个,并使用相同的动画,然后您可以通过相同的代码访问。或者你可以学习如何使用Animator here

【讨论】:

  • 你的意思是我可以调用 Animation 吗?我知道 levedots.animation 不是动画师,但我如何控制动画...通过停止并转到某个帧?
猜你喜欢
  • 2021-07-22
  • 1970-01-01
  • 2022-12-07
  • 1970-01-01
  • 1970-01-01
  • 2013-12-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多