unity3d动画操作以及动画实现

今天主要总结的是 unity3d 中内置动画操作,以及代码事件编写动画实现

1.如何导入、执行外部动画

在项目窗口中,首先,单击选择我们所准备的动画模型,在属性面板中选择Animations栏,

在属性中点击“+","-"可以增加和删除动画片段,

而在Start以及End中,可以分别设置每一个动画片段的开始帧数及结束帧数。

下面是我自己动画做的一个分解:

Idle:表示我动画中的准备动作。

Aim:表示我动画中的瞄准动作。

Fire:表示我动作中的投篮动作。

当上面动画片段设置好以后,我们用代码来实现,如何通过键盘上的数字按键”1“来控制这些片段完成一个动画流程

首先,如何设置一个按键:

在菜单栏中选择 Edit->roject
Setting->Input

在Input属性面板中选择一项

Name设置成Play

Negative Button(按下键)设置成数字键”1“ ;

Positive Button (松开键)设置成数字键”1“ ;

如下图所示:

好了,按键我们在上面已经设置好了。

接下来到底如何用代码来实现通过键盘上的数字按键”1“来控制这些片段完成一个动画流程呢?

下面请看详细代码 :

  1. //是否可控
  2. bool CanControl=true;
  3. // Update is called once per frame
  4. void Update ()
  5. {
  6. //当按下play  也就是我们上面设置的数字键”1“。
  7. if (Input.GetButtonDown ("Play"))
  8. {
  9. //执行动画 叫"Aim"的动画片段 也就是我们上面设置的瞄准动画片段
  10. gameObject.animation.PlayQueued ("Aim");
  11. }
  12. //当按下1键 且可控
  13. else if (Input.GetButtonUp ("Play")&&CanControl  )
  14. {
  15. //执行动画 fire 也就是我们上面设置的投篮动画片段
  16. gameObject.animation.PlayQueued ("Fire");
  17. //接着继续执行 Idle  也就是我们上面设置的准备动画片段
  18. gameObject.animation.PlayQueued ("Idle");
  19. CanControl =false ;
  20. }
  21. CanControl =true;
  22. }

复制代码

复制代码

通过上述简单的代码我们即可实现动画分解片段的串联

下面请看效果图:

1.按下键盘数字键"1"所执行瞄准的动作,"Aim"的动画片段

2.松开数字键”1“所执行的投篮动作,动画 fire

3. .松开数字键”1“所执行的准备动作,接着继续执行 Idle

2.使用unity3d内置的动画系统

首先,拖放素材到场景窗口中,设置好摄像机坐标,加入平行光

在游戏窗口右上角,单击  ,在弹出的菜单中依次选择
Add Tab->Animation

那么我们将发现游戏窗口上多了一个叫Animation(动画)的选项卡

接下来创建一个动画,在Animation(动画)选项卡中点击  后,在

弹出的窗体中保存我们的动画。

在Animation(动画)选项卡中,我们发现会有一小段菜单栏,我们从左到右先一一解释下

1:表示调到动画上一帧;

2:表示跳刀动画下一帧;

3:文本框输入 表示任意时间点

4:添加一个key

5:表示添加一个事件(需要代码编写)动作

可在对应选择项后面单击”-“号,则在弹出的菜单中 选择添加一条对应曲线或 key

下面我们添加 Rotation.y (以Y轴旋转),值为360度。

表示我们的对象将以360度的旋转物体。

在曲线区域 左键按住不放 拖拽选择一块区域

按”F“键后,就会发现 此区域会局部放大,这样很方便我在曲线节点较多的情况下查看

上面简单介绍了下Unity3d的内置动画,下面 我们将介绍代码事件动画

如上图 我们首先定义了一个 摄像机的对象

然后 写了2个公共事件方法

CameraFarAway():这个方法我们实现了 摄像机视角拉远

CameraClose():这个方法我们实现了 摄像机视角拉近

然后通过上面的方法,在对应事件节点添加一个事件动画 即可实现 拉远拉近的动画

如下图:

视角拉近 叉车旋转,叉车前面的夹子下降的动画

视角拉远 叉车旋转,叉车前面的夹子上升的动画

unity3d代码实现动画功能

  1. //定义一个时间变量
  2. public float time=5.0f;
  3. // Use this for initialization
  4. void Start () {
  5. //定义一个动画曲线 起始位置 坐标为-3.023f,经过5.0秒后 坐标移动到2.96f
  6. AnimationCurve curve=AnimationCurve.Linear (0.0f,-3.023f,time,2.96f);
  7. //添加
  8. curve.AddKey (2*time,-3.023f );
  9. //创建一个动画片段
  10. AnimationClip clip=new AnimationClip ();
  11. //设置该片段中的曲线对象 以X轴移动
  12. clip.SetCurve ("",typeof (Transform ),"localPosition.x",curve );
  13. //添加该片段到动画
  14. animation.AddClip (clip,"Test" );
  15. //播放名叫“Test”的动画片段
  16. animation.Play ("Test");
  17. //循环播放该动画
  18. animation.wrapMode =WrapMode.Loop ;
  19. }
  20. // Update is called once per frame
  21. void Update () {
  22. }

复制代码

复制代码

由上可以看出 代码创建 跟昨天所总结内部设置动画差不多【狗刨学习网

首先 创建一个曲线 然后由曲线生成片段 最后由片段生成动画。

时间: 2024-08-01 22:41:53

unity3d动画操作以及动画实现的相关文章

AngularJS学习--- 动画操作 (Applying Animations) ngAnimate step 12

1.切换目录 git checkout step-12 npm start 2.效果图 这里在点击右边的缩略图时,会有一个很明显的从下向上的动画过程. 3.代码实现: step11和step12之间的代码差异:https://github.com/angular/angular-phonecat/compare/step-11...step-12 Dependencies(依赖的js库): bower.json { "name": "angular-seed", &

09.11 jquery04 效果 基本 滑动滑出 淡入淡出 自定义动画 动画操作 工具 浏览器 对象和属性操作核心

# 效果 ### 基本 (width/height/opacity) * show() * hide() * toggle() ### 滑动滑出 (height) * slideUp()       隐藏 * slideDown()  显示 * slideToggle() ### 淡入淡出 * fadeOut()    隐藏 * fadeIn()      显示 * fadeToggle() * fadeTo() 不占用位置 消失之后后面的自动向上移动 ### 自定义动画 * animate(p

Jquer基础之动画操作

Jquery的动画效果能够轻松的为网页添加动画效果,为网页带来了新的活力. 一.show()方法和hide()方法 show()方法和hide()方法是jquery中最基本的动画方法.使用show()方法会将隐藏的元素显示出来,使用hide()方法会将元素的属性设置为display:none.使用hide()方法会记住原来的display属性值,并把现在的display属性设置为none;show()方法会元素的属性设置为hide()前的属性值. 示例: $("btnShowHide"

Unity3D游戏开发之Unity3D动画与Mecanim动画系统

Unity3D游戏开发之Unity3D动画与Mecanim动画系统 欢迎来到unity学习.unity培训.unity企业培训教育专区,这里有很多U3D资源.U3D培训视频.U3D教程.U3D常见问题.U3D项目源码,[狗刨学习网]unity极致学院,致力于打造业内unity3d培训.学习第一品牌. Mecanim是Unity新增的动画系统,其功能强大而灵活,让人类和非人类角色栩栩如生.Mecanim的重定向极大的提供了工作效率,而且占用极少CPU周期.使用从Unity资源商店找到的动画资源,或

[Unity3D]Unity4新的动画系统Mecanim

Unity4.X中添加的新的动画系统取代了原来3.X的旧的动画系统,新动画系统Mecanim也是官方推荐的,使得我们写较少的代码来实现连续的动画效果. 效果图 Unity3.X中动画系统播放动画 使用播放play()或淡入淡出播放CrossFade() 例如: animation.Play("name"); animation.CrossFade("name"); 也可以做成队列动画,然后播放,例如: animation.PlayQueued("name&

Unity3D游戏开发之动画模型导入

Unity3D游戏开发之动画模型导入 导入动画文件后,在工程(Porject)面板中选中,通过Inspector面板修改参数设置. 在项目视图中选中模型文件.如果想用旧版3.x的动画系统导入和编辑动画,请选择legacy选项.如果你有一个人性角色,比如,一个脑袋两条胳膊的两足动物,请选择Humanoid和'Create from this model',这样,一个完美匹配你角色骨骼关系的替身就可以被创建,或者你也可以选择其他预设好的替身. 如果你的角色不是人形物体,比如一个四足动物或者任何其它的

10 个非常实用的 SVG 动画操作JavaScript 库

10 个非常实用的 SVG 动画操作JavaScript 库 SVG 通常可以用作跨分辨率视频.这意味着在一块高分屏幕上不会降低图片的锐度.此外,你甚至可以让SVG动起来,通过使用一些javascript类库.下面,我们分享一些javascript类库,这些类库会帮助我们将SVG动画提高一个等级. Vivus Vivus 是一个能动画js类库,它能够给SVG图像显示出被画出来的过程.Vivus是没有其他类库依赖的(比如jQuery).你仅仅需要在页面中加入这个.js文件,然后传入需要被用来动画的

JQuery总结:选择器归纳、DOM遍历和事件处理、DOM完全操作和动画

JQuery总结一:选择器归纳 1.基本选择器 选择符 匹配元素 * 所有元素 id 给定ID的元素 element 给定类型的所有元素 .class 给定类的所有元素 a,b 与a或b匹配的元素 a b a的后代元素中与b匹配的元素 a>b a的直接子元素中与b匹配的元素 a+b a的直接同辈元素中与b匹配的元素 a~b a的同辈元素中与b匹配的元素 2.位置选择器 选择符 匹配元素 a b:nth-child(index) a的子元素中,第index个与b匹配的元素(从1开始计数) a b:

161设置在屏幕中的动画延迟(扩展知识:普通操作和代码块操作实现动画效果)

效果如下: ViewController.h 1 #import <UIKit/UIKit.h> 2 3 @interface ViewController : UIViewController 4 @property (strong, nonatomic) UIImageView *imgVAnimation; 5 6 @end ViewController.m 1 #import "ViewController.h" 2 3 @interface ViewControl