unity开发知识点小结04

news2024/10/2 1:31:38

混合动画

在动画器控制器中创建从新混合树,也就是创建混合动画
在这里插入图片描述
然后进入混合动画,选择混合类型为1D(表示传递参数只有一个),并且为此混合状态添加两个动画,并且设定混合状态参数为何值得时候启用相应动画,笔者这里使用的例子是用0表示走路,1表示跑步,中间值表示两个状态叠加

在这里插入图片描述

IK实现身体某个部位朝固定方向旋转

如头部,手部等确定位置

首先我们要将创建的目标物体也就是人物需要看向的物体设置为人物的目标物体

在这里插入图片描述
同时我们要在动画器设置器里面将被图层的IK处理开启
在这里插入图片描述
接下来便是为人物编写脚本实现人物运动的同时可以可以实现人物头部朝固定位置移动,或者看向固定位置

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

public class peopleRun : MonoBehaviour
{
    private Animator animator;
    public Transform target;
    void Start()
    {
        animator = GetComponent<Animator>();
        
    }

    
    void Update()
    {
        //获取水平轴
        float horizontal = Input.GetAxis("Horizontal");
        //获取垂直轴
        float veritial = Input.GetAxis("Vertical");
        //创建方向向量
        Vector3 dir = new Vector3(horizontal,0,veritial);
        //当用户按下方向按键
        if (dir != Vector3.zero)
        {
            //更改人物朝向
            transform.rotation = Quaternion.LookRotation(dir);
            //播放移动动画
            animator.SetBool("run", true);
            //实现人物移动
            transform.Translate(Vector3.forward * 2 * Time.deltaTime);
        }
        else {
            //松开方向键恢复静止动画
            animator.SetBool("run",false);
        }
    }
    //实现人物部位指向固定位置
    private void OnAnimatorIK(int layerIndex)
    {
        //设置头部IK
        animator.SetLookAtWeight(1) ;
        //让角色实现头部旋转
        animator.SetLookAtPosition(target.position);
        //设置右手Ik权重
        animator.SetIKPositionWeight(AvatarIKGoal.RightHand,1);
        //旋转权重
        animator.SetIKRotationWeight(AvatarIKGoal.RightHand,1);
        //设置手臂指向方向
        animator.SetIKPosition(AvatarIKGoal.RightHand,target.position);
        //设置手臂旋转方向
        animator.SetIKRotation(AvatarIKGoal.RightHand,target.rotation);
    }
}

物体移动实现自动导航,自主选择可运行路线

首先我们创建一个有障碍物的地图,并且对地图进行烘焙,观察地图区域可运行范围
将障碍物物体全部设为Navigation Static
在这里插入图片描述
进入导航对地图进行烘焙
在这里插入图片描述
地图上会显示玩家可以走的区域
在这里插入图片描述
创建玩家实体,并且为玩家添加Nav Mesh Agent组件,并且为物体编写导航移动脚本

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

public class NavigationTest : MonoBehaviour
{
    private NavMeshAgent agent;
    void Start()
    {
        //获取代理组件
        agent = GetComponent<NavMeshAgent>();
    }
    void Update()
    {
        //如果按下鼠标
        if (Input.GetMouseButtonDown(0)) {
            //获取点击位置
            Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
            RaycastHit hit;
            //判断射线是否碰到物体
            if (Physics.Raycast(ray,out hit)) { 
                //点击的位置
                Vector3 point = hit.point;
                //设置该位置为导航目标点
                agent.SetDestination(point);    
            }
        }
    }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/397853.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Python中函数的分类、创建和调用,你真的懂了吗

文章目录前言一、函数分类二、创建函数三、调用函数前言 在前面的博客中&#xff0c;所有编写的代码都是从上到下依次执行的&#xff0c;如果某段代码需要多次使用&#xff0c;那么需要将该段代码复制多次&#xff0c;这种做法势必会影响开发效率&#xff0c;在实际项目开发中是…

特权级那些事儿-实模式下分段机制首次出现的原因

前言&#xff1a; 操作系统的特权级模块在整个操作系统的学习中应该算的上是最难啃的了&#xff0c;提到特权级就要绕不开保护模式下的分段机制&#xff1b;如果想要彻底弄明白就要对比实模式下的分段机制有什么缺陷。这就衍生出很多问题如&#xff1a;什么是实模式&#xff1f…

Nacos 注册中心核心能力以及现实原理解析

Nacos注册中心主要分两方面解析&#xff1a;动态服务发现和Nacos实现动态服务发现的原理&#xff1b; 动态服务发现 服务发现是指使用一个注册中心来记录分布式系统中的全部服务的信息&#xff0c;以便其他服务能够快速的找到这些已注册的服务。 在单体应用中&#xff0c;DNS…

MINE: Towards Continuous Depth MPI with NeRF for Novel View Synthesis

MINE: Towards Continuous Depth MPI with NeRF for Novel View Synthesis&#xff1a;利用NeRF实现新视图合成的连续深度MPI 摘要&#xff1a;在论文中&#xff0c;提出了MINE&#xff0c;通过从单个图像进行密集3D重建来执行新的视图合成和深度估计。通过引入神经辐射场&…

05-Oracle中的对象(视图,索引,同义词,系列)

本章主要内容&#xff1a; 1.视图管理&#xff1a;视图新增&#xff0c;修改&#xff0c;删除&#xff1b; 2.索引管理&#xff1a;索引目的&#xff0c;创建&#xff0c;修改&#xff0c;删除&#xff1b; 3.同义词管理&#xff1a;同义词的作用&#xff0c;创建&#xff0…

如何通过websoket实现即时通讯+断线重连?

本篇博客只是一个demo&#xff0c;具体应用还要结合项目实际情况&#xff0c;以下是目录结构&#xff1a; 1.首先通过express搭建一个本地服务器 npm install express 2.在serve.js中自定义测试数据 const express require(express); const app express(); const http req…

详细stm32驱动SDRAM的注意事项以及在keil中的使用

SDRAM的主要参数&#xff1a; 容量&#xff1a;SDRAM的容量是指其可以存储的数据量&#xff0c;通常以兆字节&#xff08;MB&#xff09;或千兆字节&#xff08;GB&#xff09;为单位。 时钟频率&#xff1a;SDRAM的时钟频率指的是其内部时钟的速度&#xff0c;通常以兆赫&…

94. 二叉树的中序遍历

94. 二叉树的中序遍历 给定一个二叉树的根节点 root &#xff0c;返回 它的 中序 遍历 (左根右)。 首先我们需要了解什么是二叉树的中序遍历&#xff1a;按照访问左子树——根节点——右子树的方式遍历这棵树&#xff0c;而在访问左子树或者右子树的时候我们按照同样的方式遍历…

MQTT协议-订阅主题和订阅确认

MQTT协议-订阅主题和订阅确认 SUBSCRIBE——订阅主题 订阅是客户端向服务端订阅 订阅报文 订阅报文与CONNECT报文类似&#xff0c;都是由固定报头可变报头有效载荷组成 固定报头比较简单&#xff0c;也是由两个字节组成&#xff0c;第一个字节为82&#xff0c;第二个字节是…

像素密度提升33%,Quest Pro动态注视点渲染原理详解

在Connect 2022上&#xff0c;Meta发布了Quest Pro&#xff0c;并首次在VR中引入动态注视点渲染&#xff08;ETFR&#xff09;功能&#xff0c;这是一种新型图形优化技术&#xff0c;特点是以用户注视点为中心&#xff0c;动态调节VR屏幕的清晰度&#xff08;注视点中心最清晰、…

Oracle VM VirtualBox6.1.36导入ova虚拟机文件报错,代码: E_INVALIDARG (0x80070057)

问题 运维人员去客户现场部署应用服务&#xff0c;客户是windows server 服务器&#xff08;客户不想买新机器&#xff09;&#xff0c;我们程序是在linux系统里运行&#xff08;其实windows也可以&#xff0c;主要是为了保持各地环境一致方便更新和排查问题&#xff09;我们使…

吐血整理学习方法,2年多功能测试成功进阶自动化测试,月薪23k+......

目录&#xff1a;导读前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09;前言 测试进阶方向 测试进…

[Gin]框架底层实现理解(三)

1.engine.Run(port string) 这个就是gin框架的启动语句&#xff0c;看看就好了&#xff0c;下面我们解析一下那个engine.Handler() listenandserve 用于启动http包进行监听&#xff0c;获取链接conn // ListenAndServe listens on the TCP network address addr and then ca…

【SOP 】配电网故障重构方法研究【IEEE33节点】(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

Java中wait和sleep区别

文章目录1. Java中wait和sleep区别2. wait和sleep所属方法的不同3. wait的Demo3.1 没有synchronized同步代码块异常3.2 wait使用Demo4. sleep的Demo1. Java中wait和sleep区别 sleep属于Thread类中的static方法&#xff1b;wait属于Object类的方法sleep时线程状态进入TIMED_WAI…

java 如何实现在线日志

如何采集springboot日志至web页面查看 实现方案 基于Filter方式,在日志输出至控制台前,LoggerFitler 拦截日志通过websocket推送至前台页面 实现逻辑&#xff1a; LoggerFilter采集日志添加至LoggerQueue队列, LoggerConsumer 从LoggerQueue中采集推送至前台页面 #mermaid-s…

LearnOpenGL-光照-3.材质

本人刚学OpenGL不久且自学&#xff0c;文中定有代码、术语等错误&#xff0c;欢迎指正 我写的项目地址&#xff1a;https://github.com/liujianjie/LearnOpenGLProject 文章目录材质例子1代码相关光照太强了例子2例子3: 不同的光源颜色材质 引出材质 如果我们想要在OpenGL中模拟…

TTS | 语音合成常见数据集及数据格式详情

linkLJSpeech网址 &#xff1a; The LJ Speech Dataset (keithito.com)数据集描述&#xff1a;数据集大小&#xff1a;2.6GB这是一个公共领域的语音数据集&#xff0c;由 13&#xff0c;100 个简短的音频剪辑组成 一位演讲者阅读 7 本非小说类书籍的段落。为每个剪辑提供转录。…

删除的文件怎么恢复?恢复方法在这里(支持Win和Mac)

案例&#xff1a;文件永久删除还能找回来吗&#xff1f;关于Win和Mac系统的恢复方法 “前几天我在清理电脑垃圾&#xff0c;不小心误删了重要的文件。有没有什么比较全面的方法&#xff0c;可以帮助我恢复删除的文件啊&#xff1f;在线急等回复&#xff01;” 随着电脑使用的…

Golang 中 Slice的分析与使用(含源码)

文章目录1、slice结构体2、slice初始化3、append操作4、slice截取5、slice深拷贝6、值传递还是引用传递参考文献众所周知&#xff0c;在golang中&#xff0c;slice&#xff08;切片&#xff09;是我们最常使用到的一种数据结构&#xff0c;是一种可变长度的数组&#xff0c;本篇…