菜鸡456 2024-01-28 20:49 采纳率: 0%
浏览 13

unity 动画机的一个问题

如题 近期在开发使用animator动画机的时候遇到了一个奇怪的问题 。如图是我简化了的一个动画机:

img

idle:里面是空的
SortOut:里面只有控制scale变化的动画
SortIn:里面有控制scale和Postion的动画

我现在把这个动画机加到我的一个ui物体上去 ,按照我的认知来说,如果他在一直跑sortin 这个动画状态,那么pos和scale都会被这个动画里的状态接管,你用代码改动位置或者大小都是失效的,或者你在面板上拖动也是拖不动的。
但问题是:
我明明这个东西运行的时候只是在跑Idle 循环运行idle,他的position也不能改变了,代码改也没用,拖动也不行。这就很奇怪。
此时 我把sortin里的动画删去,好了pos马上就能跟着我代码里写的动了。
这样确认了 position百分之百就是被sortin里的动画挟持了。
这个有点不符合我的认知,这个物体从来就没有进入过sortin的动画里,为什么postion也不能动了,是unity动画机本来就是这样设定的,还是我哪里操作 有误呀?有没有懂得~谢谢各位!

  • 写回答

1条回答 默认 最新

  • 专家-赤兔[在线] 优质创作者: 编程框架技术领域 2024-01-29 10:33
    关注

    引自免费微信小程序:皆我百晓生

    根据您的问题描述,您在使用Unity的Animator动画机时遇到了一个奇怪的问题。您的动画机包含了三个状态:idle、SortOut和SortIn。根据您的认知,在动画机中一直处于SortIn状态时,位置和尺寸都应该由该状态的动画来控制,而不受代码或面板上的操作影响。但是,您发现即使在物体只运行Idle状态时,位置也无法更改。您想知道这是Unity动画机的设计问题,还是您的操作有误。

    首先,Unity的Animator动画机是按顺序执行的,它会在每个状态之间进行过渡。所以即使您的物体只运行Idle状态,它实际上也会经历SortOut和SortIn状态之间的过渡。这意味着SortIn状态的动画仍然会影响位置和尺寸的控制。

    为了解决这个问题,我建议您按照以下步骤进行操作:

    1. 确保您的Idle状态设置正确:检查Idle状态中是否没有任何动画剪辑和过渡。确保它仅包含需要循环播放的空动画剪辑。
    2. 检查过渡条件:在从SortOut状态到Idle状态的过渡条件中,确保没有设置位置和尺寸的任何条件。您可以在Animator视图中检查过渡条件,确保它们只针对需要过渡的参数。
    3. 检查动画的层次关系:确保SortIn状态的动画图层和SortOut状态的动画图层之间没有任何冲突。可以尝试调整他们的层级顺序,以确保SortIn状态的动画优先于SortOut状态的动画。

    如果上述步骤中的任何一项无法解决您的问题,请提供更多关于动画机的详细信息,以便我能够更好地帮助您。

    评论

报告相同问题?

问题事件

  • 创建了问题 1月28日