unity中的animation组件(一)

author author     2023-03-29     713

关键词:

参考技术A 我们可以使用Unity自带的资源来学习老版本的动画系统,新建Unity3D项目,选择菜单“Assets”->“Import Package”->“Character Controller”,导入的资源里的那个小人就是使用Legacy动画系统的模型,我们的学习可以基于他来进行。

在骨骼这一项中,我们发现动画类型的设置就是Legacy,说明这个模型使用的动画类型为老版本的动画系统。

我们再看看动画页:

动画页中,我们可以对动画剪辑进行编辑。

我们直接将FBX文件拖入场景,Unity会自动帮我们添加Transform和Animation两个组件(注意Mecanim动画系统使用的是Animator组件,Legacy动画系统使用的是Animation组件)。

Animation组件的设置还是比较简单的:

Animation:当前播放的动画。

Animations:所有可以播放的动画。

Play Automatically:是否自动播放。

Animate Physics:动画是否和物理世界进行交互。

Culling Type:动画在不可见时是否还继续播放,优化选项默认即可。

点击播放按钮就可以看见动画正常播放了。

animation组件用于播放动画;

如果想播放一个简单的动画,可以使用Animation.Play;

如果想在动画之间交叉淡入,可以使用Animation.CrossFade;

如果想改变动画模式(循环,一次,乒乓),可以改变动画导入设置里面的动画帧的WrapMode,或者在运行时改变AnimationState.wrapMode的值;

AnimationState可以用于改变动画的层,修改播放速度,并且直接控制混合与合成。

下面我们来看看如何使用脚本控制动画的播放,我们将下面的脚本绑定到人物身上即可。

using UnityEngine;

using System.Collections;

public class AnimationScript : MonoBehaviour



private Animation _animation;

void Start()



_animation = this.animation;



void OnGUI()



//直接播放动画

if(GUI.Button(new Rect(0, 0, 100, 30), "idle"))



_animation.Play("idle");



if(GUI.Button(new Rect(100, 0, 100, 30), "walk"))



_animation.Play("walk");



if(GUI.Button(new Rect(200, 0, 100, 30), "run"))



_animation.Play("run");



if(GUI.Button(new Rect(300, 0, 100, 30), "jump_pose"))



_animation.Play("jump_pose");



//使用融合来播放动画

if(GUI.Button(new Rect(0, 30, 100, 30), "idle"))



_animation.CrossFade("idle");



if(GUI.Button(new Rect(100, 30, 100, 30), "walk"))



_animation.CrossFade("walk");



if(GUI.Button(new Rect(200, 30, 100, 30), "run"))



_animation.CrossFade("run");



if(GUI.Button(new Rect(300, 30, 100, 30), "jump_pose"))



_animation.CrossFade("jump_pose");







运行程序,会看见两排按钮,其中第一排按钮使用Play方法来切换动画,而第二排按钮则使用CrossFade来播放动画。

以从跑步切换到站立动画为例来看:

Play:直接切换动画,如果人物之前处于倾斜跑步状态,则会立即变成站立状态,表现上比较不真实,特别是当两个动画姿势差别较大时。

CrossFade:通过动画融合来切换动画,第二个参数可以指定融合的时间,如果人物之前处于倾斜跑步状态,则会在指定的融合时间内逐渐变成站立状态,表现上接近真实的人物动作切换效果。

但是当使用CrossFade播放跳跃动画时会出现问题,主要问题是跳跃动画不是循环播放且其持续时间小于动画融合的时间,我们修改为下面的脚本指定融合时间短一点就可以正常进行跳跃的融合播放了:

_animation.CrossFade("jump_pose", 0.1f);

该方法可以指定当当前的动画播放完毕后接下来播放的动画,如下:

_animation.PlayQueued("run", QueueMode.CompleteOthers, PlayMode.StopSameLayer);

unity游戏教程初步:animator的使用(代码片段)

...管理动画剪辑(AnimationClip)的组件Animator。2Unity中的动画系统 Unity的动画系统又称为Mecanim,是一个基于动画剪辑(AnimationClip)的系统。在此系统中,我们可以通过对游戏对象的一系列属性进行操作从而制... 查看详情

unity-animator组件(代码片段)

Animator组件Animator 是 Unity 中动画控制器的组件,相当于一个动画片段管理器。我们知道在 Unity 中素材可以拖拽到游戏对象上,制作成称为 Clip 的动画片段,如果该对象上没有 Animator 组件,那么... 查看详情

spine学习一-渲染组件

一共有四个播放的组件:SkeletonAnimation:有点儿类似于unity的Animation,挂上一个spine资源,就可以跑了 SkeletonRenderer:SkeletonAnimation的父类,渲染出Spine的图像的组件 SkeletonGraphic:这个不大清楚 SkeletonAnimator:类似于Unity... 查看详情

unity动画系统animation和animator的小实例

...场景,找到一张Sprite图片,拖到面板中,右键添加Animation组件。如下:&nb 查看详情

从 Unity3d 中的 Animator 获取动画状态

】从Unity3d中的Animator获取动画状态【英文标题】:GetAnimationstatesfromanAnimatorinUnity3d【发布时间】:2014-03-3018:21:14【问题描述】:我使用Animator创建了两个动画状态,我想在运行类型时更改这些动画的速度。如何在运行时获取这些... 查看详情

关于unity中的帧动画

一、帧动画1:美术准备好一个连续动作的离散图片;2:程序在准确的时间来切换这个图片;3:优点:简单,速度快;缺点:资源占用相对过大; 二、frame_anim组件编写1:代码里面强制要求加入Image组件;[RequireComponent(typeof(Image))]2:帧动画的... 查看详情

unity3d播放器和animation不一致

...会发现有的animation无法拖入到animator,或者是有的animation组件动画在animation窗口可以预览,但是播放的时候无法播放的问题。两种是不一样的,如果把animation组件生成的animation放入animator里面同样会发现拖入的animation,但是标签... 查看详情

unity--animation(旧版动画组件)和animator(新版动画器组件)

旧版animation动画器组件如果想让一个游戏物体具有动画表现的话,我们需要给这个游戏物体挂载动画组件和音频组件视频组件一样,如果想在游戏对象上播放动画效果的话我们需要挂载一个动画组件,然后再给这个动... 查看详情

unity3dstudy----麦子学院----------unity3d常用组件及分析----------animator动画状态机

 Animator是unity4版本之后的新动画可以在编辑器中直接编辑连线各个动画的转换,也可以是用代码直接调用底层来转换动画代码:1usingUnityEngine;2usingSystem.Collections;34publicclassAnimationTest:MonoBehaviour{56//Animationanimation;7Animatoranimator;89... 查看详情

animator组件关闭再打开后参数丢失问题

问题如下,因为再激活Animator时,它会重置一次,参数也会丢失 这个问题一直存在,论坛给出的解释是把参数缓存下来,在激活时重置http://answers.unity3d.com/questions/919995/parameters-and-states-of-animator-reset-on-objects.html 我把论坛... 查看详情

unity3d动画系统(代码片段)

Unity3d学习笔记本篇简单介绍Unity3d中的动画系统及其使用。模型导入以带动画的FBX文件为例,unity版本为5.0以上版本。新版动画系统当你导入FBX文件后,会发现模型具有一个Animator(状态机)组件。我们一般将它成为(新)动画系统... 查看详情

unity中常见的组件都有哪些呢?

...MeshCollider、Renderer和Animation。参考技术AameObject必带Transform组件,其他组件可以按情况添加,Collider组件是碰撞器,Rigidbidy组件是刚体属性器(拥有物理属性),MeshRender组件是网格渲染器 参考技术BMeshFilter、MeshCollider、Renderer和Anim... 查看详情

unity动画系统(animation,animator,timeline)(代码片段)

...目录1.Animation1.1创建Animation1.2Animation属性2.Animator2.1Animator组件2.2Animation状态2.3状态控制参数2.4代码中控制状态3.代码控制动画的播放/暂停/继续播放1.Animation1.1创建Animation选中需要添加动画的物体,打开Animation面板点击Create创... 查看详情

unity组件参考手册

1、角色控制器CharacterController2、动画器Animator3、音频源AudioSource 查看详情

unity用animation组件制作简单的动画(代码片段)

...莫名其妙的坑,今天写个文章记录一下。首先用到的组件是Animation,这个组件可以制作动画。先创建一个文件夹,添加一个Animation。然后创建一个提示框文本,添加上Animation组件。然后将刚才创建的Animation拖上去... 查看详情

惠斯勒的冒险日记—第2天

...画状态机Animator  这两天仔细研究了Unity游戏引擎中的动画状态机,不得不说确实是非常复杂,Animator组件是Unity中非常重要的一个组件,对于我制作的这款AVG来说,Animator可以说是整个游戏的核心也不为过,毕竟人物的动... 查看详情

unity创建动画的步骤

创建动画的步骤:1.导入模型和动画进行设置2.创建Animator组件3.创建并设置AnimatorController 进行设置上面的设置见下面AnimatorController设置4.设置脚本进行动画的控制添加脚本代码的时候,其中首先要做的是获取本身物体上的Animato... 查看详情

怎么把3dmax里面做的动画在unity中实现

...atar。创建一个AnimatorController,在场景中为模型添加Animator组件,组件的Avata为之前系统自动生成的Avatar。组件的AnimatorController为自己创建的。然后打开AnimatorController,将fbx的动画文件拖入controller。这样就可以用Animator控制3dMax绑... 查看详情