Unity之 Vector3 的详细介绍以及方法的介绍
文章目录
- 总的介绍
- 小试牛刀
- 相关的描述的参数
- 看个小例子
总的介绍
当涉及到Unity中的Vector3类时,以下是一些常用的方法和操作:
-
magnitude方法:返回向量的长度。float length = vector.magnitude; -
sqrMagnitude方法:返回向量的平方长度,通常用于比较向量大小而无需进行开方运算,从而提高效率。float squaredLength = vector.sqrMagnitude; -
normalized方法:返回向量的单位向量,即长度为1但方向相同的向量。Vector3 normalizedVector = vector.normalized; -
Vector3.Dot方法:计算两个向量的点积(内积),用于测量两个向量之间的相似性。float dotProduct = Vector3.Dot(vectorA, vectorB); -
Vector3.Cross方法:计算两个向量的叉积(外积),用于计算垂直于这两个向量的向量。Vector3 crossProduct = Vector3.Cross(vectorA, vectorB); -
Vector3.Lerp方法:在两个向量之间进行线性插值。Vector3 interpolatedVector = Vector3.Lerp(startVector, endVector, t); -
Vector3.Distance方法:计算两个向量之间的距离。float distance = Vector3.Distance(vectorA, vectorB); -
Vector3.Angle方法:计算两个向量之间的夹角。float angle = Vector3.Angle(vectorA, vectorB); -
Vector3.Project方法:将一个向量投影到另一个向量上,得到一个投影向量。Vector3 projection = Vector3.Project(vectorToProject, ontoVector); -
Vector3.Reflect方法:计算一个向量关于一个法线的反射向量。Vector3 reflection = Vector3.Reflect(incidentVector, normal);
这些方法可以用于执行各种向量计算,包括测量、变换、旋转、碰撞检测等等。根据您的具体需求,选择适当的方法可以帮助您更轻松地处理向量操作。
小试牛刀
以下是一个示例代码,演示了如何使用Vector3类的不同方法,并附带了详细的注释说明:
using UnityEngine;public class VectorMethodsExample : MonoBehaviour
{public Transform target; // 用于演示的目标对象public Transform otherObject; // 用于演示的另一个对象private void Update(){Vector3 moveDirection = target.position - transform.position;// 获取向量的长度float magnitude = moveDirection.magnitude;// 获取向量的平方长度float sqrMagnitude = moveDirection.sqrMagnitude;// 归一化向量Vector3 normalizedDirection = moveDirection.normalized;// 计算两个向量的点积float dotProduct = Vector3.Dot(moveDirection, otherObject.position - transform.position);// 计算两个向量的叉积Vector3 crossProduct = Vector3.Cross(moveDirection, otherObject.position - transform.position);// 在两个向量之间进行线性插值float t = Mathf.PingPong(Time.time, 1f); // 0 到 1 之间的插值参数Vector3 interpolatedVector = Vector3.Lerp(moveDirection, otherObject.position - transform.position, t);// 计算两个向量之间的距离float distance = Vector3.Distance(transform.position, otherObject.position);// 计算两个向量之间的夹角float angle = Vector3.Angle(moveDirection, otherObject.position - transform.position);// 将一个向量投影到另一个向量上Vector3 projectedVector = Vector3.Project(moveDirection, otherObject.position - transform.position);// 计算一个向量关于一个法线的反射向量Vector3 normal = Vector3.up; // 示例法线Vector3 reflection = Vector3.Reflect(moveDirection, normal);Debug.Log("Magnitude: " + magnitude);Debug.Log("Squared Magnitude: " + sqrMagnitude);Debug.Log("Normalized Direction: " + normalizedDirection);Debug.Log("Dot Product: " + dotProduct);Debug.Log("Cross Product: " + crossProduct);Debug.Log("Interpolated Vector: " + interpolatedVector);Debug.Log("Distance: " + distance);Debug.Log("Angle: " + angle);Debug.Log("Projected Vector: " + projectedVector);Debug.Log("Reflection: " + reflection);}
}
请注意,这只是一个示例,以便演示各种Vector3方法的使用方式。在实际应用中,您需要根据具体情况进行调整。希望这个示例能够帮助您更好地理解和使用Vector3类的方法。
相关的描述的参数
“Vector3” 通常是一个表示三维空间中向量的数据结构或类,其名称表明它是一个包含三个分量的向量。在许多编程语言和数学库中,这种类型的向量通常用来表示位置、方向或位移等概念。
一个普通的三维向量本身通常只包含 x、y 和 z 三个分量。
看个小例子
这行代码是在许多游戏开发环境中常见的一种操作,用于创建一个三维向量(Vector3),表示一个移动方向或位移。让我们逐步解释这行代码的每个部分:
Vector3 moveDirection = new Vector3(horizontalInput, 0f, verticalInput);
-
Vector3:这是一个表示三维向量的类或结构体。它通常包含三个分量:x、y 和 z,分别对应三维空间中的横向、纵向和纵深方向。 -
moveDirection:这是一个变量名,用于存储表示移动方向或位移的三维向量。您可以将其视为存储位置、方向或速度等信息的容器。 -
new Vector3(horizontalInput, 0f, verticalInput):这是一个向Vector3构造函数传递参数来创建新的三维向量的表达式。其中,horizontalInput和verticalInput是变量,它们可能代表输入设备(例如键盘、手柄)的输入,表示玩家在水平和垂直方向上的输入值。这些输入值可以是浮点数(float)类型。horizontalInput:代表水平方向上的输入值。通常,左负右正是一种常见的约定。0f:这个值表示在 y 方向上的移动,通常被设置为 0,因为在许多游戏中,垂直方向通常用于表示高度,而在这个上下移动的情况下,高度不发生变化。verticalInput:代表垂直方向上的输入值。通常,下负上正是一种常见的约定。
因此,代码的含义是创建一个名为 moveDirection 的三维向量,表示根据玩家在水平和垂直方向上的输入所确定的移动方向。这个向量可以被用于各种游戏物体的移动操作,例如玩家角色、摄像机、子弹等。
相关文章:
Unity之 Vector3 的详细介绍以及方法的介绍
文章目录 总的介绍小试牛刀相关的描述的参数看个小例子 总的介绍 当涉及到Unity中的Vector3类时,以下是一些常用的方法和操作: magnitude 方法:返回向量的长度。 float length vector.magnitude;sqrMagnitude 方法:返回向量的平…...
Postgresql部署及简单操作
目录 1、介绍 2、什么是PostgreSQL 3、PostgreSQL 的特点 4、数据库定为 5、环境准备 6、编译安装 6.1 安装依赖包 6.2 下载安装包 6.3 创建用户 6.4 创建 postgresql数据目录并授权 6.5 上传压缩包并解压 6.6 编译postgresql源码 6.7 配置环境变量 6.8 初始化数…...
rabbitmq集群搭建
升级步骤 1.升级包上传 1.1上传erlang、rabbitmq安装包 创建对应升级目录 将安装包otp_src_22.1.7.tar.gz上传到新创建的目录下 将安装包rabbitmq-server-generic-unix-3.8.9.tar.xz上传到新创建的目录下 1.2 执行解压命令tar -zxvf otp_src_22.1.7.tar.gz xz -d rabbitmq-s…...
C++ 二叉搜索树的概念特性
1. 二叉搜索树 1.1 二叉搜索树概念 二叉搜索树又称二叉排序树,它或者是一棵空树 ,或者是具有以下性质的二叉树 : 若它的左子树不为空,则左子树上所有节点的值都小于根节点的值 若它的右子树不为空,则右子树上所有节点的值都大…...
7、Spring_AOP
一、Spring AOP 简介 1.概述 对于spring来说,有三大组件,IOC,ID,AOP aop概述:AOP(Aspect Oriented Programming)面向切面编程。 作用:不改变原有代码设计的基础上实现功能增强 例子 传统打印日志 使用…...
QChart:数据可视化(用图像形式显示数据内容)
1、数据可视化的图形有:柱状/线状/条形/面积/饼/点图、仪表盘、走势图,弦图、金字塔、预测曲线图、关系图、数学公式图、行政地图、GIS地图等。 2、在QT Creator的主页面,点击 欢迎》示例》右侧输入框 输入Chart,即可查看到QChar…...
【python】Leetcode(primer-set)
文章目录 78. 子集(集合的所有子集)90. 子集 II(集合的所有子集) 更多 leetcode 题解可参考:【Programming】 78. 子集(集合的所有子集) 给定一组不含重复元素的整数数组 nums,返回…...
【LVS集群】
目录 一、集群概述 1.负载均衡技术类型 2.负载均衡实现方式 二、LVS结构 1.三层结构 2.架构对象 三、LVS工作模式 四、LVS负载均衡算法 1.静态负载均衡 2.动态负载均衡 五、ipvsadm命令详解 1. -A 2. -D 3. -L 4. -a 5. -d 6. -l 7. -t 8. -s 9. -r 10. -…...
软考高级系统架构设计师系列之:论文题目类型、论文考试大纲、历年考试论文真题汇总、论文写作原则、论文写作常见问题、论文评分标准
软考高级系统架构设计师系列之:论文题目类型、论文考试大纲、历年考试论文真题汇总、论文写作原则、论文写作常见问题、论文评分标准 一、论文写作概述二、论文题目类型三、论文考试大纲1.系统建模2.软件架构设计3.系统设计4.分布式系统设计5.系统的可靠性分析与设计6.系统的安…...
完整的application.xml
<!-- 资源文件配置 --><beans profile"dev"><bean class"com.ningpai.util.CustomPropertyPlaceholderConfigurer"><property name"locations"><list><value>classpath:/com/ningpai/web/config/dev/jdbc.p…...
C语言:运算符优先级
一、优先级(常使用的运算符) 见表格 二、注意 总体原则:算术运算符 > 关系运算符 > 逻辑运算符 > 赋值运算符 同一级别下的运算符的运算次序由表达式的结合方向决定 运算符注释级别( )圆括号1[ ]数组下标1后置后置2后置--后置--2前置…...
Android GreenDao数据库升级(附Demo)
前言 大家好久不见,一转眼马上八月份下旬了,最近由于工作比较忙,没时间给大家更新博文。百忙之中抽出时间,给大家来更新一篇关于GreenDao3数据库的升级。 关于GreenDao的详细介绍以及一些逻辑性的增、删、改、查等,可以…...
剑指 Offer 32 - III. 从上到下打印二叉树 III
目录 使用函数实现 使用双端队列实现 请实现一个函数按照之字形顺序打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右到左的顺序打印,第三行再按照从左到右的顺序打印,其他行以此类推。 例如: 给定二叉树: [3,9,20,nu…...
【QT5-自我学习-线程qThread移植与使用-通过代码完成自己需要功能-移植小记3】
【QT5-自我学习-线程qThread移植与使用-通过代码完成自己需要功能-移植小记3】 1、前言2、实验环境3、自我总结(1)文件的编写(2)信号与槽的新理解(3)线程数据的传递 4、移植步骤第一步:添加新文…...
后端开发12.商品模块
概述 简介 商品模块这个设计的非常复杂 效果图 数据库...
/usr/bin/containerd: Operation not permitted
问题 今天在重启docker程序的时候一直启动不起来,通过systemctl status docker和jourctl -xu docker也没有发现什么有用的报错信息,无奈只好查看/var/log/message,发现以下错误提示: Started containerd container runtime Start…...
分析商务报表使用什么工具?
传统的BI分析商务报表存在的问题 随着数字化转型的深入推进,企业面临着海量数据的挑战和机遇。数据是企业的重要资产,能够帮助企业洞察市场动态、优化业务流程、提升客户满意度、创造竞争优势。然而,传统的BI(商业智能࿰…...
nginx文件配置
在部署前后端分离项目时,当前端和后端不在一个服务器上时,需要在前端服务器上下载nginx并配置 #hkdp-front-test 前端服务器 xxx.xxx.x.69 前端项目端口号9528,监听文件夹 /home/apps/vue/hkdp-manager 配置如下 server{ …...
视频云存储/安防监控EasyCVR视频汇聚平台如何通过角色权限自行分配功能模块?
视频云存储/安防监控EasyCVR视频汇聚平台基于云边端智能协同,支持海量视频的轻量化接入与汇聚、转码与处理、全网智能分发、视频集中存储等。音视频流媒体视频平台EasyCVR拓展性强,视频能力丰富,具体可实现视频监控直播、视频轮播、视频录像、…...
小程序定位到 胶囊的三个点大概中间
话不多说,先上效果图 这个功能实现思路: 首先先拿到这一张整图(快捷,精确)然后获取整个导航栏高度(自定义导航栏,非自定义导航栏忽略这一步)获取三个点的做偏移量,把高度和偏移量给到一个定位到盒子,这个盒子里就放这个图片&…...
测试微信模版消息推送
进入“开发接口管理”--“公众平台测试账号”,无需申请公众账号、可在测试账号中体验并测试微信公众平台所有高级接口。 获取access_token: 自定义模版消息: 关注测试号:扫二维码关注测试号。 发送模版消息: import requests da…...
React Native 导航系统实战(React Navigation)
导航系统实战(React Navigation) React Navigation 是 React Native 应用中最常用的导航库之一,它提供了多种导航模式,如堆栈导航(Stack Navigator)、标签导航(Tab Navigator)和抽屉…...
在HarmonyOS ArkTS ArkUI-X 5.0及以上版本中,手势开发全攻略:
在 HarmonyOS 应用开发中,手势交互是连接用户与设备的核心纽带。ArkTS 框架提供了丰富的手势处理能力,既支持点击、长按、拖拽等基础单一手势的精细控制,也能通过多种绑定策略解决父子组件的手势竞争问题。本文将结合官方开发文档,…...
【Linux】C语言执行shell指令
在C语言中执行Shell指令 在C语言中,有几种方法可以执行Shell指令: 1. 使用system()函数 这是最简单的方法,包含在stdlib.h头文件中: #include <stdlib.h>int main() {system("ls -l"); // 执行ls -l命令retu…...
Leetcode 3577. Count the Number of Computer Unlocking Permutations
Leetcode 3577. Count the Number of Computer Unlocking Permutations 1. 解题思路2. 代码实现 题目链接:3577. Count the Number of Computer Unlocking Permutations 1. 解题思路 这一题其实就是一个脑筋急转弯,要想要能够将所有的电脑解锁&#x…...
DIY|Mac 搭建 ESP-IDF 开发环境及编译小智 AI
前一阵子在百度 AI 开发者大会上,看到基于小智 AI DIY 玩具的演示,感觉有点意思,想着自己也来试试。 如果只是想烧录现成的固件,乐鑫官方除了提供了 Windows 版本的 Flash 下载工具 之外,还提供了基于网页版的 ESP LA…...
linux 下常用变更-8
1、删除普通用户 查询用户初始UID和GIDls -l /home/ ###家目录中查看UID cat /etc/group ###此文件查看GID删除用户1.编辑文件 /etc/passwd 找到对应的行,YW343:x:0:0::/home/YW343:/bin/bash 2.将标红的位置修改为用户对应初始UID和GID: YW3…...
【python异步多线程】异步多线程爬虫代码示例
claude生成的python多线程、异步代码示例,模拟20个网页的爬取,每个网页假设要0.5-2秒完成。 代码 Python多线程爬虫教程 核心概念 多线程:允许程序同时执行多个任务,提高IO密集型任务(如网络请求)的效率…...
ip子接口配置及删除
配置永久生效的子接口,2个IP 都可以登录你这一台服务器。重启不失效。 永久的 [应用] vi /etc/sysconfig/network-scripts/ifcfg-eth0修改文件内内容 TYPE"Ethernet" BOOTPROTO"none" NAME"eth0" DEVICE"eth0" ONBOOT&q…...
laravel8+vue3.0+element-plus搭建方法
创建 laravel8 项目 composer create-project --prefer-dist laravel/laravel laravel8 8.* 安装 laravel/ui composer require laravel/ui 修改 package.json 文件 "devDependencies": {"vue/compiler-sfc": "^3.0.7","axios": …...
