当前位置: 首页 > news >正文

unity知识点小结02

虚拟轴

虚拟轴就是一个数值在-11内的轴,这个数轴上重要的数值就是-1,0和1。当使用按键模拟一个完整的虚拟轴时需要用到两个按键,即将按键1设置为负轴按键,按键2设置为正轴按键。在没有按下任何按键的时候,虚拟轴的数值为0;在按下按键1的时候,虚拟轴的数值会从0-1进行过渡,而不是直接变成-1,;在按下按键2的时候,虚拟轴的数值会从0~1进行过渡
在这里插入图片描述
通过Project Settings设置轴的数量以及属性等
在这里插入图片描述

using System.Collections;
using System.Collections.Generic;
using UnityEngine;public class AxisText : MonoBehaviour
{void Start(){}void Update(){//获取水平轴float horizontal = Input.GetAxis("Horizontal");float vertical = Input.GetAxis("Vertical");Debug.Log(horizontal + " " +vertical);//虚拟按键if (Input.GetButtonDown("Jump")) {//触发按键Debug.Log("空格");}}
}

通过按下上下左右键可改变其水平,垂直虚拟轴的值
在这里插入图片描述

手机,平板等设备实现触摸操作

using System.Collections;
using System.Collections.Generic;
using UnityEngine;public class TouchText : MonoBehaviour
{void Start(){//开启多点触摸Input.multiTouchEnabled = true;}void Update(){//判断单点触摸if (Input.touchCount ==  1) {//获取触摸对象Touch touch = Input.touches[0];//获取触摸位置Debug.Log(touch.position);//获取触摸阶段switch (touch.phase){case TouchPhase.Began://开始触摸break;case TouchPhase.Moved://触摸移动break;case TouchPhase.Stationary://触摸静止break;case TouchPhase.Ended://触摸结束break;case TouchPhase.Canceled://触摸因为其他事件打断break;}//判断多点触摸if (Input.touchCount == 2) {Touch touch1 = Input.touches[0];//获取第一个触摸点Touch touch2 = Input.touches[1];//获取第二个触摸点}}}
}

实时灯光是通过实时计算形成的灯光----性能消耗高
烘焙灯光是当灯光在场景中已经形成相应的效果我们可以把灯光删除,但是场景依然存在灯光效果

在这里插入图片描述
在这里插入图片描述

相机深度,如果场景里面同时存在多个相机,默认显示深度较高的那个相机拍摄到的物体,清除标志如果是仅深度那么就是将各个相机排到的物体叠加显示

通过脚本控制音乐播放

将音频文件放入项目并在物体脚本中设置相应的变量,将音频添加到脚本中
在这里插入图片描述

using System.Collections;
using System.Collections.Generic;
using UnityEngine;public class MusicText : MonoBehaviour
{// 获取需要播放的音频片段public AudioClip mode;public AudioClip mode2;//播放器组件private AudioSource player;void Start(){//获取播放器组件player = GetComponent<AudioSource>();//设定播放的片段player.clip = mode;//实现循环播放player.loop = true;//控制音量player.volume = 0.5f;//开始播放player.Play();}void Update(){//按空格实现暂停和继续if (Input.GetKeyDown(KeyCode.Space)) {if (player.isPlaying){player.Pause();//暂停//player.Stop();//停止}else {player.UnPause();//继续播放//player.Play();//重新播放}}//按下按键播放其他音效if (Input.GetMouseButtonDown(0)) {player.PlayOneShot(mode2);//播放一次音效}}
}

视频播放

先将视频文件导入项目,在场景中穿件一个平面,并且穿件一个渲染器纹理,在将视频文件加到渲染器纹理中,在创建控制视频播放的脚本,将脚本添加到纹理器中。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Video;public class VudioText : MonoBehaviour
{private VideoPlayer player;//用于接收视频文件void Start(){player = GetComponent<VideoPlayer>();//接收视频文件}void Update(){if (Input.GetKeyDown(KeyCode.Space)) {if (player.isPlaying){player.Pause();}else {player.Play();}}}
}

控制人物移动

在编写脚本之前我们要向人物添加Character Controller组件
在这里插入图片描述

using System.Collections;
using System.Collections.Generic;
using UnityEngine;public class MoveText : MonoBehaviour
{private CharacterController player;//创建角色控制器void Start(){player = GetComponent<CharacterController>();}void Update(){//获取水平轴float horizontal = Input.GetAxis("Horizontal");//获取垂直轴float vertical = Input.GetAxis("Vertical");//创建成一个方向向量Vector3 dir = new Vector3(horizontal,0,vertical);//让物体朝该方向移动//player.Move(dir);   //该方法不存在重力效果player.SimpleMove(dir);}
}

碰撞及监听

要实现物体的碰撞效果,首先要将物体都设置碰撞器,此外还要确保碰撞的物体最少其中一个要有设置刚体组件

在这里插入图片描述

首先对碰撞物体进行脚本编写来监听碰撞事件 ,写者编写的碰撞为两物体碰撞之后产生爆炸,碰撞时销毁物体然后产生爆炸效果,一定时间后又将爆炸效果销毁
爆炸预设体挂载脚本
在这里插入图片描述

using System.Collections;
using System.Collections.Generic;
using UnityEngine;public class ColText : MonoBehaviour
{//创建碰撞之后产生效果的预设体public GameObject prefad;void Start(){}void Update(){}//监听发生爆炸    函数所带的元素为和自己发生碰撞的物体private void OnCollisionEnter(Collision collision){//产生碰撞创建碰撞效果物体   (创建预设体,设定预设体初始位置设置预设体初始旋转)Instantiate(prefad, transform.position, Quaternion.identity);//销毁自身Destroy(gameObject);}//持续碰撞中private void OnCollisionStay(Collision collision){}//结束碰撞private void OnCollisionExit(Collision collision){}
}

如果要销毁碰撞后产生的爆炸效果应该在单独编写脚本并且将脚本挂载到爆炸效果的预设体上
在这里插入图片描述

using System.Collections;
using System.Collections.Generic;
using UnityEngine;public class ExplorText : MonoBehaviour
{float timer = 0;void Start(){}// Update is called once per framevoid Update(){timer += Time.deltaTime;if (timer > 1) { Destroy(gameObject);     }}
}

触发器

当某个物体到达某个位置或者触发到某个触发器之后会触发其他场景物体效果
写者将做一个将目标对象移到固定位置造成固定物体消失
触发器和碰撞的区别,设置触发器物体之间可以穿透,碰撞物体之间不能穿透

设置正方体以及长方体为触发器,胶囊移动到正方体位置长方体消失
在这里插入图片描述

在这里插入图片描述

为胶囊设置移动脚本,见上文
为正方体设置触发事件脚本

using System.Collections;
using System.Collections.Generic;
using UnityEngine;public class moveclo : MonoBehaviour
{void Start(){}void Update(){}//进入触发器   函数元素代表进入触发区的物体private void OnTriggerEnter(Collider other){//若有物体进入触发器,将名称为door的物体设为不显示GameObject door = GameObject.Find("door");if (door != null) { door.SetActive(false);}}//停留在触发器中private void nTriggerStay(Collider other){}//离开触发器private void OnTriggerExit(Collider other){}
}

效果展示
在这里插入图片描述
在这里插入图片描述

相关文章:

unity知识点小结02

虚拟轴 虚拟轴就是一个数值在-11内的轴&#xff0c;这个数轴上重要的数值就是-1,0和1。当使用按键模拟一个完整的虚拟轴时需要用到两个按键&#xff0c;即将按键1设置为负轴按键&#xff0c;按键2设置为正轴按键。在没有按下任何按键的时候&#xff0c;虚拟轴的数值为0&#xf…...

总线(四)Modbus总线 协议

文章目录Modbus技术背景Modbus OSI分布Moudbus分类通讯过程Moudbus协议通信过程以及报文解析RTU 与 ASCII 收发数据区别Modbus技术背景 Modbus是一种串行通信协议。 1971年&#xff0c;Modicon公司首次退出Modbus协议&#xff0c;ModbusRTU和Modbus ASCII诞生于此。 后来施耐德…...

Cadence Allegro 导出Component Report详解

⏪《上一篇》   🏡《总目录》   ⏩《下一篇》 目录 1,概述2,Component Report作用3,Component Report示例4,Component Report导出方法4.1,方法14,2,方法2B站关注“硬小二”浏览更多演示视频 1,...

程序猿成长之路之密码学篇-DES算法详解

DES的算法实现原理详情请见 https://blog.csdn.net/qq_31236027/article/details/128209185 DES算法密钥获取详情请见 https://blog.csdn.net/qq_31236027/article/details/129224730 编码工具类获取详见 https://blog.csdn.net/qq_31236027/article/details/128579451 DES算法…...

maven生命周期、阶段与默认绑定插件梳理

maven生命周期、阶段与默认绑定插件梳理 CSDN博客 码云源码 1.maven生命周期、阶段与默认绑定插件 序号生命周期lifecycle阶段phase默认绑定插件(链接官网)默认绑定插件(链接maven库)说明1cleancleanmaven-clean-pluginmaven-clean-plugin清理2.1buildvalidate——验证2.2b…...

【数学基础】

文章目录『 第1讲 高等数学预备知识 』1.1 函数的概念与特性函数的四种特性【 重要结论 】1.2 函数的图像直角坐标系下的图像极坐标系下的图像参数方程1.3 常用基础知识【 情报#1 】『 第2讲 数列极限 』2.1 引言2.2 求数列极限【 情报#2 】『 第1讲 高等数学预备知识 』 1.1 …...

网上电子商城的设计与实现

技术&#xff1a;Java、JSP等摘要&#xff1a;21 世纪以来&#xff0c;人类经济高速发展&#xff0c;人们的生活发生了日新月异的变化&#xff0c;特别是计算机的应用及普及到经济和社会生活的各个领域。在消费领域&#xff0c;网上购物已经成为大众所接受的一种新型的消费方式…...

2023thupc总结

A 大富翁 很有意思的题 ∑x∈A∑y∈B[x支配y]−∑x∈A∑y∈B[y支配x]−∑x∈Awx\sum_{x\in A}\sum_{y\in B}[x支配y]-\sum_{x\in A}\sum_{y\in B}[y支配x]-\sum_{x\in A}w_x∑x∈A​∑y∈B​[x支配y]−∑x∈A​∑y∈B​[y支配x]−∑x∈A​wx​ ∑x∈A∑y[x支配y]−∑x∈A∑y[y支…...

【数据库】MySQL数据库基础

目录 1.数据库&#xff1a; 2.数据库基本操作 2.1 MySQL的运行原理 2.2显示数据库&#xff1a; 2.3创建数据库 2.4使用数据库 2.5删除数据库 3.常见的数据类型 3.1数值类型&#xff1a; 3.2字符型类型 3.3日期类型 4.表的操作 4.1创建表 4.2查看表 4.3删除表 5.汇总…...

grid了解

结构 <div class"grid"><div>1</div><div>2</div><div>3</div><div>4</div><div>5</div><div>6</div><div>7</div><div>8</div><div>9</div>&l…...

2023年全国最新工会考试精选真题及答案13

百分百题库提供工会考试试题、工会考试预测题、工会考试真题、工会证考试题库等&#xff0c;提供在线做题刷题&#xff0c;在线模拟考试&#xff0c;助你考试轻松过关。 81.女职工委员会在&#xff08;&#xff09;下开展工作。 A.企业工会委员会领导 B.企业工会委员会指导 …...

初识HTML技术

文章目录一、为什么学习前端?二、第一个HTML文件VSCode三. HTML元素四. HTML页面一、为什么学习前端? 我们作为一个后端程序员&#xff0c;为什么还要学习前端&#xff0c;因为我们的终极目的是实现web开发&#xff0c;搭建网站&#xff0c;网站 前端 后端 比如我们随便…...

我们为什么要用消息队列?

消息队列是系统设计中存在时间最长的中间件之一&#xff0c;从系统有通信需求开始&#xff0c;就产生了消息队列。 消息队列的使用场景 在日常系统设计与实现的过程中&#xff0c;下面3种场景会涉及到消息队列&#xff1a; 异步处理流量控制服务解耦 异步处理 典型的应用场…...

Linux进程控制

进程控制fork函数进程终止退出码常见的退出方式进程等待什么是进程等待&#xff0c;为什么要进程等待阻塞与非阻塞进程替换替换原理替换函数执行系统命令执行自己写的程序模拟实现简易的shellfork函数 fork函数是创建一个子进程&#xff0c;之前用过。 #include <unistd.h…...

PMP项目管理引论介绍

目录1. 指南概述和目的1.1 项目管理标准1.2 道德与专业行为规范2 基本要素2.1 项目2.2 项目管理的重要性2.3 项目、项目集、项目组合以及运营管理之间的关系2.3.1 概述2.3.2. 项目组合与项目集管理2.3.3. 运营管理2.3.4. 组织级项目管理和战略2.3.5. 项目管理2.3.6. 运营管理与…...

计算机视觉废钢堆提取问题

计算机视觉废钢堆提取问题 背景介绍 在钢铁炼制中&#xff0c;废钢是非常重要的原料&#xff0c;不同等级废钢对于钢成品影响很大&#xff0c;因此需要对废钢进行正确分类。某废钢料场中&#xff0c;卸料区域布置了多个摄像头&#xff0c;用于拍摄卸料场中废钢堆&#xff0c;…...

判断水仙花数-课后程序(Python程序开发案例教程-黑马程序员编著-第二章-课后作业)

实例5&#xff1a;判断水仙花数 水仙花数是一个3位数&#xff0c;它的每位数字的3次幂之和等于它本身&#xff0c;例如13 53 33 153&#xff0c;153就是一个水仙花数。 本实例要求编写程序&#xff0c;实现判断用户输入的3位数是否为水仙花数的功能。 实例目标 掌握Pytho…...

目标检测: 数据增强代码详解

1. 常见的数据增强 1.1 翻转图像 左右水平翻转 假设图片的宽高为w,h,bdbox左上角A坐标为(x1,y1), 右下角B为(x2,y2)。经过左右水平翻转后,bdbox的左上角A1坐标(w-x2,y1) ,右下角B1坐标为(w-x1,y2)左右水平翻转的代码实现如下:from PIL import Image image = Image.open(i…...

第二讲:ambari编译复盘,如何实现一次性成功编译ambari

上节课我们已经讲解了如何成功编译ambari源码,安装ambari-server rpm包以及成功部署ambari。本节课我们来复盘一下上节课的编译过程,以及思考如何实现一次性成功编译ambari。 要想一次性成功编译ambari,那么就需要将预置工作做好,比如: maven镜像源配置,node_moudle模块…...

Windows下jdk安装与卸载-超详细的图文教程

jdk安装 下载jdk 由于现在主流就是jdk1.8&#xff0c;所以这里就下载jdk1.8进行演示。官方下载地址&#xff1a;https://www.oracle.com/java/technologies/downloads/#java8-windows。 官方下载需要注册oracle账号&#xff0c;国内下载有可能速度慢&#xff0c;若不想注册账…...

Chapter03-Authentication vulnerabilities

文章目录 1. 身份验证简介1.1 What is authentication1.2 difference between authentication and authorization1.3 身份验证机制失效的原因1.4 身份验证机制失效的影响 2. 基于登录功能的漏洞2.1 密码爆破2.2 用户名枚举2.3 有缺陷的暴力破解防护2.3.1 如果用户登录尝试失败次…...

【Python】 -- 趣味代码 - 小恐龙游戏

文章目录 文章目录 00 小恐龙游戏程序设计框架代码结构和功能游戏流程总结01 小恐龙游戏程序设计02 百度网盘地址00 小恐龙游戏程序设计框架 这段代码是一个基于 Pygame 的简易跑酷游戏的完整实现,玩家控制一个角色(龙)躲避障碍物(仙人掌和乌鸦)。以下是代码的详细介绍:…...

Qt/C++开发监控GB28181系统/取流协议/同时支持udp/tcp被动/tcp主动

一、前言说明 在2011版本的gb28181协议中&#xff0c;拉取视频流只要求udp方式&#xff0c;从2016开始要求新增支持tcp被动和tcp主动两种方式&#xff0c;udp理论上会丢包的&#xff0c;所以实际使用过程可能会出现画面花屏的情况&#xff0c;而tcp肯定不丢包&#xff0c;起码…...

前端倒计时误差!

提示:记录工作中遇到的需求及解决办法 文章目录 前言一、误差从何而来?二、五大解决方案1. 动态校准法(基础版)2. Web Worker 计时3. 服务器时间同步4. Performance API 高精度计时5. 页面可见性API优化三、生产环境最佳实践四、终极解决方案架构前言 前几天听说公司某个项…...

Java如何权衡是使用无序的数组还是有序的数组

在 Java 中,选择有序数组还是无序数组取决于具体场景的性能需求与操作特点。以下是关键权衡因素及决策指南: ⚖️ 核心权衡维度 维度有序数组无序数组查询性能二分查找 O(log n) ✅线性扫描 O(n) ❌插入/删除需移位维护顺序 O(n) ❌直接操作尾部 O(1) ✅内存开销与无序数组相…...

【JVM】- 内存结构

引言 JVM&#xff1a;Java Virtual Machine 定义&#xff1a;Java虚拟机&#xff0c;Java二进制字节码的运行环境好处&#xff1a; 一次编写&#xff0c;到处运行自动内存管理&#xff0c;垃圾回收的功能数组下标越界检查&#xff08;会抛异常&#xff0c;不会覆盖到其他代码…...

STM32F4基本定时器使用和原理详解

STM32F4基本定时器使用和原理详解 前言如何确定定时器挂载在哪条时钟线上配置及使用方法参数配置PrescalerCounter ModeCounter Periodauto-reload preloadTrigger Event Selection 中断配置生成的代码及使用方法初始化代码基本定时器触发DCA或者ADC的代码讲解中断代码定时启动…...

GitHub 趋势日报 (2025年06月08日)

&#x1f4ca; 由 TrendForge 系统生成 | &#x1f310; https://trendforge.devlive.org/ &#x1f310; 本日报中的项目描述已自动翻译为中文 &#x1f4c8; 今日获星趋势图 今日获星趋势图 884 cognee 566 dify 414 HumanSystemOptimization 414 omni-tools 321 note-gen …...

mysql已经安装,但是通过rpm -q 没有找mysql相关的已安装包

文章目录 现象&#xff1a;mysql已经安装&#xff0c;但是通过rpm -q 没有找mysql相关的已安装包遇到 rpm 命令找不到已经安装的 MySQL 包时&#xff0c;可能是因为以下几个原因&#xff1a;1.MySQL 不是通过 RPM 包安装的2.RPM 数据库损坏3.使用了不同的包名或路径4.使用其他包…...

力扣-35.搜索插入位置

题目描述 给定一个排序数组和一个目标值&#xff0c;在数组中找到目标值&#xff0c;并返回其索引。如果目标值不存在于数组中&#xff0c;返回它将会被按顺序插入的位置。 请必须使用时间复杂度为 O(log n) 的算法。 class Solution {public int searchInsert(int[] nums, …...