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

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

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

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

相关推荐
一个笔记本2 小时前
godot log | 修改main scene
游戏引擎·godot
nnsix3 小时前
Unity PicoVR开发 实时预览Unity场景 在Pico设备中(串流)
unity·游戏引擎
一只一只9 小时前
Unity之UGUI Button按钮组件详细使用教程
unity·游戏引擎·ugui·button·ugui button
神米米11 小时前
Maya快速安装UE4 布料权重绘制插件PhysX导出apx
游戏引擎·ue4·maya
WarPigs12 小时前
Unity阴影
unity·游戏引擎
一只一只13 小时前
Unity之Invoke
unity·游戏引擎·invoke
技术小甜甜14 小时前
【Godot】【入门】信号系统从 0 到 1(UI/玩法彻底解耦的通用写法)
ui·游戏引擎·godot
技术小甜甜16 小时前
【Godot】【入门】节点生命周期怎么用(避免帧循环乱写导致卡顿的范式)
游戏引擎·godot
tealcwu16 小时前
【Unity踩坑】Simulate Touch Input From Mouse or Pen 导致检测不到鼠标点击和滚轮
unity·计算机外设·游戏引擎
ThreePointsHeat16 小时前
Unity WebGL打包后启动方法,部署本地服务器
unity·游戏引擎·webgl