[首页]
[文章]
[教程]
首页
Web开发
Windows开发
编程语言
数据库技术
移动平台
系统服务
微信
设计
布布扣
其他
数据分析
首页
>
编程语言
> 详细
unity3d动画操作以及动画实现
时间:
2015-02-22 15:47:23
阅读:
428
评论:
0
收藏:
0
[点我收藏+]
今天主要总结的是 unity3d 中内置动画操作,以及代码事件编写动画实现
1.如何导入、执行外部动画
在项目窗口中,首先,单击选择我们所准备的动画模型,在属性面板中选择Animations栏,
在属性中点击“+","-"可以增加和删除动画片段,
而在Start以及End中,可以分别设置每一个动画片段的开始帧数及结束帧数。
下面是我自己动画做的一个分解:
Idle:表示我动画中的准备动作。
Aim:表示我动画中的瞄准动作。
Fire:表示我动作中的投篮动作。
当上面动画片段设置好以后,我们用代码来实现,如何通过键盘上的数字按键”1“来控制这些片段完成一个动画流程
首先,如何设置一个按键:
在菜单栏中选择 Edit->
roject Setting->Input
在Input属性面板中选择一项
Name设置成Play
Negative Button(按下键)设置成数字键”1“ ;
Positive Button (松开键)设置成数字键”1“ ;
如下图所示:
好了,按键我们在上面已经设置好了。
接下来到底如何用代码来实现通过键盘上的数字按键”1“来控制这些片段完成一个动画流程呢?
下面请看详细代码 :
//是否可控
bool CanControl=true;
// Update is called once per frame
void Update ()
{
//当按下play 也就是我们上面设置的数字键”1“。
if (Input.GetButtonDown ("Play"))
{
//执行动画 叫"Aim"的动画片段 也就是我们上面设置的瞄准动画片段
gameObject.animation.PlayQueued ("Aim");
}
//当按下1键 且可控
else if (Input.GetButtonUp ("Play")&&CanControl )
{
//执行动画 fire 也就是我们上面设置的投篮动画片段
gameObject.animation.PlayQueued ("Fire");
//接着继续执行 Idle 也就是我们上面设置的准备动画片段
gameObject.animation.PlayQueued ("Idle");
CanControl =false ;
}
CanControl =true;
}
复制代码
复制代码
通过上述简单的代码我们即可实现动画分解片段的串联
下面请看效果图:
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代码实现动画功能
//定义一个时间变量
public float time=5.0f;
// Use this for initialization
void Start () {
//定义一个动画曲线 起始位置 坐标为-3.023f,经过5.0秒后 坐标移动到2.96f
AnimationCurve curve=AnimationCurve.Linear (0.0f,-3.023f,time,2.96f);
//添加
curve.AddKey (2*time,-3.023f );
//创建一个动画片段
AnimationClip clip=new AnimationClip ();
//设置该片段中的曲线对象 以X轴移动
clip.SetCurve ("",typeof (Transform ),"localPosition.x",curve );
//添加该片段到动画
animation.AddClip (clip,"Test" );
//播放名叫“Test”的动画片段
animation.Play ("Test");
//循环播放该动画
animation.wrapMode =WrapMode.Loop ;
}
// Update is called once per frame
void Update () {
}
复制代码
复制代码
由上可以看出 代码创建 跟昨天所总结内部设置动画差不多【
狗刨学习网
】
首先 创建一个曲线 然后由曲线生成片段 最后由片段生成动画。
unity3d动画操作以及动画实现
原文:http://blog.csdn.net/book_longssl/article/details/43907631
踩
(
0
)
赞
(
0
)
举报
评论
一句话评论(
0
)
登录后才能评论!
分享档案
更多>
2021年09月23日 (328)
2021年09月24日 (313)
2021年09月17日 (191)
2021年09月15日 (369)
2021年09月16日 (411)
2021年09月13日 (439)
2021年09月11日 (398)
2021年09月12日 (393)
2021年09月10日 (160)
2021年09月08日 (222)
最新文章
更多>
2021/09/28 scripts
2022-05-27
vue自定义全局指令v-emoji限制input输入表情和特殊字符
2022-05-27
9.26学习总结
2022-05-27
vim操作
2022-05-27
深入理解计算机基础 第三章
2022-05-27
C++ string 作为形参与引用传递(转)
2022-05-27
python 加解密
2022-05-27
JavaScript-对象数组里根据id获取name,对象可能有children属性
2022-05-27
SQL语句——保持现有内容在后面增加内容
2022-05-27
virsh命令文档
2022-05-27
教程昨日排行
更多>
1.
list.reverse()
2.
Django Admin 管理工具
3.
AppML 案例模型
4.
HTML 标签列表(功能排序)
5.
HTML 颜色名
6.
HTML 语言代码
7.
jQuery 事件
8.
jEasyUI 创建分割按钮
9.
jEasyUI 创建复杂布局
10.
jEasyUI 创建简单窗口
友情链接
汇智网
PHP教程
插件网
关于我们
-
联系我们
-
留言反馈
- 联系我们:wmxa8@hotmail.com
© 2014
bubuko.com
版权所有
打开技术之扣,分享程序人生!