Unity学习笔记-Animate、Nav Mesh

参考:
https://www.cnblogs.com/chinarbolg/p/9601366.html

准备工作

新建项目

新建一个项目,放一个Plane进去

下载动画素材

Asset Store里面随便下载一个有动作的动画教材,导入项目。
在这里插入图片描述
然后放一个小人到平台上
在这里插入图片描述

Animator

添加Animator组件

给小人添加Animator组件
在这里插入图片描述

创建一个Animator Controller

我这里创建了一个Animator Controller叫Test
在这里插入图片描述
把Test添加到Animator 中的Controller
在这里插入图片描述

添加状态

点击刚刚创建的Animator Controller,在控制面板中添加两个空的状态
在这里插入图片描述
修改名字Idle和Run,右键点击状态添加Transition(就是下面的箭头)
在这里插入图片描述

添加Motion

给两个状态都添加Motion
在这里插入图片描述

添加一些控制参数

这里我添加了bool类型的TestRun
在这里插入图片描述
点击箭头添加参数和值

在这里插入图片描述

在这里插入图片描述
这里的exit time取消(我暂时没有查什么原因)
在这里插入图片描述

脚本

创建脚本

创建一个TestMove脚本,来源见开头链接

using UnityEngine;
using UnityEngine.AI;

public class TestMove : MonoBehaviour
{
    private NavMeshAgent navMeshAgent;
    private Animator animator;
    
    void Start()
    {
        navMeshAgent = GetComponent<NavMeshAgent>(); //获取自身AI组件
        animator = GetComponent<Animator>();     //动画组件
    }
    
    void Update()
    {
        if (Input.GetMouseButton(1)) //右键
        {
            object ray = Camera.main.ScreenPointToRay(Input.mousePosition); //屏幕坐标转射线
            RaycastHit hit;                                                     //射线投射碰撞
            bool isHit = Physics.Raycast((Ray)ray, out hit);             //射线投射(射线,结构体信息) ;返回bool 值 是否检测到碰撞
            if (isHit)
            {
                print("坐标:" + hit.point);               //射线与物体碰撞点
                navMeshAgent.SetDestination(hit.point); //AI组件,设置目的地/终点
                animator.SetBool("TestRun", true);    //让人物跑起来
            }
        }
        if (navMeshAgent.remainingDistance < 0.5f) //当前位置 与终点 的  剩余距离<0.5f
        {
            animator.SetBool("TestRun", false); //让人物站立
        }
    }
}

给人物添加脚本

在这里插入图片描述

Nav Mesh

给人物添加Nav Mesh Agent组件

在这里插入图片描述

烘焙

点击Plane,选择static
在这里插入图片描述
选中Plane,点击window-AI-Na。。。
在这里插入图片描述
点击Bake
在这里插入图片描述

然后就可以运行了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值