接着“T06_unity人物触发器 c#”教程,保存场景
给场景起个名字unity07_RoleAnimation
删除掉除地板人物以外对象
接下来我们要做一个门动画,需要手动搭建一个门
将创建的立方体reset位置归零
调整门的属性
接下来打开动画面板
动画面板(只限于位移和旋转)
点击create按钮,开始创建动画,创建动画文件夹,
滚轮与鼠标左键点击上侧可以调节
先调时间轴确定时间的长度,1.30为1.5s(90代表1.5s 1s = 60 贞)
(第一步:打开动画
第二步:调节时间轴
第三步:打开录制按钮)
打开录制按钮后,将y轴调成3.5
关闭录制按钮,播放即可看到动画门
如果想把开门改成2s ,拖动最上面的小点按住移至2s即可
找到刚创建的动画RootDownAnimation之后将他的loop time 对勾去掉
再次播放,就不会循环开门了
双击状态机打开控制面板
点击空板创建一个空的状态
在右侧面板改名Idle(闲置)
将闲置Idle设置为默认状态
在闲置下Idle创建一个连接
连接下面的方块
选择参数Parameters创建同时创建变量
之后选中设置卡子的线 然后 点击加号
设置成功,运行试一下找到
门就被打开了
点击连接线,看右侧属性——has exit time(有退出时间吗)将对勾去掉
has exit time 代表需不需要执行完运动后的剩余时间
会立即执行 没有延迟
将RootDoenAnimation改名为OpenDoor
在状态机上选择copy
再右键粘贴
将OpenDoor0 改名为 CloseDoor
将CloseDoor属性面板1改为-1
再开关门之间创建一条连接线
点击连接线,关闭 has exit time
点击‘+’,把默认true 改成false
再创建连接线
动画部分完成,接下来创建触发器
在门再创建一个触发器,门本身有个触发器是为了阻挡玩家穿过
打开 is Trigger 对勾
接下来调一下触发器的属性面板
门的触发器完成,接下来给门写代码
首先创建一个脚本起名为 OpenDoor
将脚本绑定在门身上
将代码复制
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class OpenDoor : MonoBehaviour
{
private Animator animator;
private void Start()
{
animator = GetComponent<Animator>();
animator.SetBool("isOpen", true); //开门指令
}
private void OnTriggerEnter(Collider other)
{
if (other.CompareTag("Player"))
{
animator.SetBool("isOpen", true);//开门指令
}
}
}
即可完成 手动开关门