问题标签 [unity3d-mecanim]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
185 浏览

unity3d - 交换机械骨骼的动画

我编写了一个函数来交换应用于 mecanim 骨骼的旋转;例如左手和右手:

我只交换轮换,因为我认为这就足够了。是这样吗,还是我也应该交换位置?

下面是我的更新方法,我相信它会交换左右手的旋转,然后使用新的旋转数组来更新我的统一字符:

当然,我的类变量包含必要的声明,如下所示。这就是函数1620提到的原因:

但是,左右手的动画方式显然不会发生交换。我错过了什么或做错了什么?

0 投票
2 回答
21985 浏览

animation - Unity 动画在预览中播放,但在玩游戏时不播放

我为剑游戏对象制作了一个简单的动画,在玩家角色静止不动的情况下不断缓慢地上下移动。

我的剑附加了一个 Animator 组件:

看这里

Animator Controller 也很简单,这个动画被附加到我的默认状态:

看这里

动画在动画窗口的预览模式下播放得很好。但是当我运行我的游戏时,动画根本没有播放,剑只是静止不动而不是移动。

这个问题的原因是什么?

0 投票
2 回答
1041 浏览

animation - 当我按下按钮而不等待其他动画时,如何启用我的动画?| 梅卡尼姆

我正在学习如何使用 mecanim。在动画师中,我有 3 个动画(空闲、步行和运行),这些动画可以正常工作,但问题是当我按下按钮 W 时,例如,两秒钟后才启用动画(步行),因为动画(步行)等到另一个动画(空闲)完成。我希望按下按钮时激活动画。我怎样才能做到这一点?

0 投票
0 回答
53 浏览

animation - 如何使用 Mecanim 将非循环动画剪辑添加(不混合)到循环动画?

我有一个带有 Animator 和循环动画剪辑的 GameObject。
此动画将 X 坐标从 0 更改为 10 并返回。

我需要在第一个动画中添加另一个动画,以增加 GameObject 的比例并同时将其颜色更改为红色。

缩放和颜色改变后,GameObject 保持这些参数并继续根据第一个动画剪辑移动。

我设法解决它的唯一方法是使用 couroutine 编写自定义脚本:

这适用于线性插值,但需要编写额外的代码并为非线性变换编写更多代码。

如何使用 Mecanim 获得相同的结果?

示例项目链接:https ://drive.google.com/file/d/0B8QGeF3SuAgTU0JWNGd2RnpUU00/view?usp=sharing

0 投票
0 回答
708 浏览

c# - 设置一次 MecAnim 触发器,直到状态返回

我正在尝试使用 MecAnim 在 Unity 中的角色上播放单个动画。我真的不熟悉这些,所以我的方法可能完全错误。

基础层包含很多步行的东西,但我试图触发的动画是在一个单独的Right Arm层上,默认状态为空。有一个Wave应用于Default -> Wave转换的触发器,并在该触发器上设置了一个定时退出Wave -> Default

MecAnim - 右臂图

然后我有一个脚本(在调试时),当您按下“O”并导致角色挥动一次时会触发该脚本。

动画按预期播放,但控制台显示IsName检查总是通过,这让我觉得我做错了什么。

过渡需要几分之一秒才能完成,然后如果SetTrigger再次调用该方法,动画将播放两次。

我正在寻找一种简单的方法来确保仅在该层的状态完全恢复为默认值时才设置触发器。

0 投票
2 回答
3355 浏览

unity3d - 在 Unity 中,如何防止动画干扰运动?

问题:

我有一个带有Nav Mesh Agent组件的角色模型。它可以很好地移动到我告诉它移动的任何目的地(使用该NavMeshAgent.destination属性)。

但是,当我使用从商店下载的动画控制器时,这突然失败了。角色不会跑到目的地;相反,它会无休止地绕着它转圈。

我不确定为什么会发生这种情况,但我认为运行动画会以某种方式削弱角色的转动能力。Inspector,在相关 .fbx 文件的导入设置中显示:Average Angular Y Speed: 0.0 deg/s.

我真正非常不明白的是,为什么即使我已经明确地将NavMeshAgent.updatePosition属性NavMeshAgent.updateRotation设置为true. 我理解文档的方式,这应该使角色移动Nav Mesh Agent,而不是其他任何东西(包括动画)希望它移动?

我应该如何解决这个问题?我应该如何强制动画不干预运动?

0 投票
2 回答
2803 浏览

c# - How to rotate upper body of a first person character (unity)

I'm making a first person RPG game in unity. So, I have an attack animation but it only attacks what's in front of the character. How can I make the animation based off of where the player is looking (For example, if I look up, the character should attack upward instead of forward)? I've tried attaching the first person camera to the upper part of the body so it would rotate with the camera, but it causes the character's mesh to stretch and distort, and the animation doesn't even work anyway.

By the way, the character is all rigged, has different animations for walking, running, and an attack animation using Unity's mecanim. Everything else works, I'm just having trouble with this attack animation...

0 投票
1 回答
1031 浏览

unity3d - 如何防止统一状态机中的大量转换?

我有一个具有四种状态的统一状态机:左空闲、上空闲、下空闲和右空闲。

过渡

为了在这些状态之间转换,我必须创建 12 个转换。(白色箭头)。这看起来已经很笨拙了,但是现在我需要再添加 4 个状态:向上跑、向下跑、向左跑和向右跑。

这是否意味着我最终会在所有状态之间运行 8 个状态和 24 个转换?这对我来说似乎很笨拙。如果您以后需要更改某些内容怎么办?

我知道我可以通过代码进行转换,但这似乎不是推荐的工作方式。

与许多州合作的推荐方式是什么?

0 投票
0 回答
222 浏览

animation - 您如何从当前动画中获得可能的过渡?

我有几个触发动画,它们启动一个动画,分为三个独立的状态(输入、主要和输出)。动画通常会像这样播放:

空闲(触发器)-> in -> main -> out -> Idle

我希望能够中止主动画状态并交叉淡入淡出状态。

使用CrossFadeInFixedTime我可以轻松地交叉淡入淡出到命名状态,但我无法动态找到“出”过渡的名称。当前动画状态似乎没有任何关于潜在转换的信息,所以除了使用超严格的命名约定之外,我如何通过代码找出当前动画状态中可用的转换?

理想情况下,我希望能够遍历动画树并查看前面的剪辑。

0 投票
1 回答
13889 浏览

c# - 检索所有 Animator 状态并在代码中手动设置它们

我偶然发现了一些我从未想过会成为问题的事情,但是……确实如此。我正在使用统一 5.5 编写可视化/模拟工具包。

使用的模型已经导入,动画剪辑已通过编辑器进行设置。这是我的动画状态控制器的样子:

动画状态控制器 我想在 DropdownMenu 中显示 AnimationStates。每当用户选择一个条目时,当前的动画状态都应该设置为选中的那个。

eG 用户选择自动播放:状态设置为剪辑自动播放,然后设置为 SimpleRotate,然后设置为 ComplexRotate,然后再次设置为自动播放(只是一个简单的循环)。

但如果用户选择 Idle、ComplexRotate 0 或 SimpleRotate 0,则动画应该播放一次,然后停留在剪辑的末尾。(就像我在动画控制器中所做的那样。

这是我想要的一个相当伪的版本:

最重要的是,如果我可以检查从和到状态的转换,那就太好了。(自动播放是循环下拉菜单中唯一应该显示的状态)

这可以通过自定义动画控制器来实现吗?还是我错过了什么?