Unity(第二十一部)动画的基础了解(感觉不了解其实也行)

1、动画组件老的是Animations

  1. 动画视频
  2. Play Automatically 是否自动播放
  3. Animate Physics 驱动方式,勾选后是物理驱动
  4. Culling Type 剔除方式 默认总是动画化就会一直执行下去,第二个是基于渲染播放(离开镜头后不执行),

如果没有动画的话,可以自己做,点击窗口动画进入动画面板

  1. 选中物体,创建动画 动画就是属性的改变
  2. 添加属性,属性是物体的组件
  3. 先择帧数,修改属性,就会形成动画

可以通过代码播放

csharp 复制代码
 // Update is called once per frame@Unity 消息10 个引用void Update()
if (input.GetMouseButtonDown(0)){
GetComponent<Animation>().Play("right");
}

2、新版的Animator




  1. 创建一个物体
  2. 挂在组件
  3. 创建动画控制器,并拖入组件
  4. 做动画,如老版本,窗口创建动画,新版动画参数与老版本不同
  5. 新建动画不在动画控制器中,如果设置默认的话需要点开控制器选择;

代码示例和老版本一样

csharp 复制代码
 // Update is called once per frame@Unity 消息10 个引用void Update()
if (input.GetMouseButtonDown(0)){
GetComponent<Animation>().Play("right");
}

3、角色动画

下载的模型,一般都有FBX模型文件,一般在Animations或者Animator文件夹中,模型文件中有动画效果

  1. 创建一个物体
  2. 挂在组件
  3. 创建动画控制器,并拖入组件
  4. 打开控制器页面后,把模型文件拖入控制器页面

多个动作切换

控制器页面选择动画a创建过渡链接动画b,会自动切换动作,过度可以是双向的

控制过度

控制器页面选择参数,

trigger 触发设置

bool 布尔设置

int 数值设置

Foloatt 浮点设置

创建脚本

csharp 复制代码
 
if (input.GetKeyDown(KeyCode.F)){
		//触发pickup参数

		GetComponent<Animator>0.SetTrigger("pickup");
}

有延迟的话,取消退出时间就好了,还有过度时间settings

4、按键让角色动起来

动画+位移+旋转朝向

这里描述一下位移等

csharp 复制代码
void Start(){

	animator = GetComponent<Animator>();
}
void Update(){
	//水平轴
	float horizontal = Input.GetAxis("Horizontal");
	//垂直轴
	float vertical = Input.GetAxis("Vertical");
	//朝向的向量
	Vector3 dir = new Vector3(horizontal, 0, vertical)
	//当用户按下了方向键
	if (dir != Vector3.zero){
			//面向向量
			transform.rotation = Quaternion.LookRotation(dir);
			//播放跑步动画
			animator.SetBool("lsRun", true);
			//朝向前方移动
			transform.Translate(Vector3.forward * 2* Time.deltaTime);
	} else{
		//播放站立动画
			animator.SetBool("lsRun", false);
	}
	
}

5、如果动画不理想的话

**Rig:**动画类型:当然人性的动画可以通用,可以导入其他人形动画;
Animation:

剪辑可以创建新的动画

时间轴是动画长度

修改后需要点击应用

循环不用解释吧

变换旋转:选择烘焙就会把动画中旋转的动画取消掉

变换位置y轴:选择烘焙就会把动画中上下的动画取消掉

变换位置其他的同理

曲线:根据动画时间变换曲线的数值,火焰大小特效等使用,代码获取需要添加动画参数;下面是示例

csharp 复制代码
			animator.GetFloat("lsRun");

事件:可以设置动画的某个时刻发生,如:射击等

csharp 复制代码
void letFoot(){

Debug.Log("时间1时执行");
} 
void rightFoot(){

Debug.Log("时间二时执行");
}

6、混合动画

  1. 创建状态,混合
  2. 双击可以进入混合页面
  3. 创建一个float 参数,根据这个参数执行混合
  4. 混合类型选择1d,就会根据一个参数执行
  5. 添加动画: 第 一 个 选 项 就 是 添 加 动 画 , 第 二 个 是 嵌 套 其 他 混 合 器

7、动画太多,可以分层

下图用他创建过度后,然和状态都能执行他过度的动画

下图创建子的混合器,点击进去后,可以编辑子的混合器,新的混合器会多一个图层

i

子图层为了分类动画,可以点加号创建新的图层、图层有权重;

但是添加图层会遮住权重小的图层,解决方案就是遮罩,那么创建遮罩

创建后可以设置人形遮罩,绿色表示需要遮罩部分,红色是不遮罩

相关推荐
不伤欣9 小时前
游戏设计模式 - 子类沙箱
游戏·unity·设计模式
Magnum Lehar11 小时前
vulkan游戏引擎test文件memory实现
游戏引擎
Magnum Lehar11 小时前
vulkan游戏引擎test_manager实现
java·算法·游戏引擎
快乐觉主吖15 小时前
Unity的日志管理类
android·unity·游戏引擎
WarPigs1 天前
Unity性能优化笔记
笔记·unity·游戏引擎
T.D.C1 天前
【业务框架】3C-相机-Cinemachine
unity
一线灵2 天前
跨平台游戏引擎 Axmol-2.6.1 发布
游戏引擎
Clank的游戏栈2 天前
Unity基于GraphView的可视化关卡编辑器开发指南
unity·编辑器·游戏引擎
海尔辛2 天前
Unity UI 性能优化--Sprite 篇
ui·unity·性能优化
三巧2 天前
Godot 敌人生成半径和围墙不匹配,导致敌人错误的生成在围墙外的解决代码
游戏引擎·godot