T06_unity人物子物体动画 c#

接着 “T06_unity人物根物体动画 c# ”教程,保存场景,起名为 08子物体动画

 作为对比子物体动画,ctrl + d 一个door,起名为 ChildDoor

并调整属性面板,我们要做一个两扇门

接着我们只留下门模型,意思是移除掉除Cube,Transform,Mesh Renderer 和 Box Collider 组件  之外的组件

调整ChileDoor 的x轴

 

接下来给子物体找一个空物体(父亲)

 给空(根)物体起名字为ChildDoor 给子物体起名Mesh

将物体x轴调回3

在根物体创建动画

 起名为ChildDoorAnimation

第一步:选择120关键帧

 第二步:点开录制按钮,将子物体坐标x轴调至1.5

第三步:结束录制并播放

并起名字为MeshRight

 再将Door删除del,ctrl + d 子物体 并起名为MeshLeft

 打开ChildDoorAnimation动画选择第二个子物体MeshLeft将他的x轴调至-4.5

结束录制并播放

 选择录制好的动画ChildDoorAnimation将他属性面板里的loop time 对勾去掉

门变得不再循环打开

 接下来我们进入ChildDoor的动画器状态机

 进入动画器状态机后,创建一个空状态起名 闲置Idle

 

 将Idle设置成默认初始状态

 拷贝开门动画

 粘贴

 并起名为ChildOpenDoor 与 ChildCloseDoor

修改关门的Speed值 为 -1

 之后连线 三角关系

 点击‘+’号创建参数

 起名为isOpen

 选择第一条线进行设置

关闭 has exit time 点击‘+’选择true

 设置第二条线

关闭 has exit time 点击‘+’选择false

第三条线不设置

 接下来我们创建个脚本 名为 OpenDoorByE (通过E键开门)

 将该脚本绑定在ChildDoor上

注意:

动画器与脚本要在同一个物体上

 将以下代码复制

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class OpenDoorByE : MonoBehaviour
{
    private bool isNear = false; //玩家是否在门附近
    private void Update()
    {
        if (Input.GetKeyDown(KeyCode.E))
        {
            GetComponent<Animator>().SetBool("isOpen", true); //开门
        }
    }
    private void OnTriggerEnter(Collider other)
    {
        if(other.CompareTag("Player"))
            isNear = true;
    }
    private void OnTriggerExit(Collider other)
    {
        if (other.CompareTag("Player"))
            isNear = false;
    }
}

 接下来我们给门一个触发器,选中根物体,添加一个碰撞器

 打开 is Trigger 对勾

 接下来编辑碰撞器属性

点击编辑处三个连接小方块图标

会出现很多小点点,拉伸小点点调节属性

 需求完成:进入触发器后按E键 即可开门 ,离开触发器自动关门

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值