Unity 基础函数
Mathf:
//1.π-PI
print(Mathf.PI);
//2.取绝对值-Abs
print(Mathf.Abs(-10));
print(Mathf.Abs(-20));
print(Mathf.Abs(1));
//3.向上取整-Ce il To In t
float f = 1.3f;
int i = (int)f;
print(i);
print(Mathf.CeilToInt(f));
print(Mathf.CeilToInt(1.00001f));
//4.向下取整-FloorToInt
print(Mathf.FloorToInt(9.6f));
//5.钳制函数-clamp 限制大小
print(Mathf.Clamp(10, 11, 20));//10
print(Mathf.Clamp(22, 11, 20));//20
print(Mathf.Clamp(15, 11, 20));//15
//6.获取最大值-Max
print(Mathf.Max(10, 11, 20));//取最大数
//7.获取最小值-Min
print(Mathf.Pow(10, 2));//10的2次方
//8.一个数的n次幕-Pow
print(Mathf.FloorToInt(9.6f));
//9.四舍五入-RoundToInt
print(Mathf.RoundToInt(9.6f));
//10.返回一个数的平方根-Sqrt
print(Mathf.Sqrt(4f));//2
//11.判断一个数是否是2的n次方-IsPowerofTwo
print(Mathf.IsPowerOfTwo(9));//false
//12.判断正负数-Sign
print(Mathf.Sign(9.6f));//正数返回1
三角函数:
// 弧度转角度
float rad = 1;
float anger = rad * Mathf.Rad2Deg;
print(anger);
// 角度转弧度
anger = 1;
rad = anger * Mathf.Deg2Rad;
print(rad);
//注意:Mathf中的三角函数相关函数,传入的参数需要时弧度值
print(Mathf.Sin(30 * Mathf.Deg2Rad));
print(Mathf.Cos(60 * Mathf.Deg2Rad));
//注意:反三角函数得到的结果是正弦或者余弦值对应的弧度
rad = Mathf.Asin(0.5f);
print(rad * Mathf.Rad2Deg);
rad = Mathf.Acos(0.5f);
print(rad * Mathf.Rad2Deg);
坐标系转换:
//世界坐标系
//目前学习的和世界坐标系相关的
//this.transform.position;
//this.transform.rotation;
//this.transform.eulerAngles;
//this.transform.lossyScale;
//修改他们会是相对世界坐标系的变化
//相对坐标系
//相对父对象的物体坐标系的位置本地坐标相对坐标
//this.transform.localPosition;
//this.transform.localEulerAngles;
//this.transform.localRotation;
//this.transform.localscale;
//修改他们会是相对父对象物体坐标系的变化
//三屏幕坐标系
//Input.mouse Position
//screen.width;
//screen.height;
//坐标转换相关
//世界转本地
//this.transform.InverseTransformDirection
//this.transform.InverseTransformPoint
//this.transform.InverseTransformVector
//本地转世界
//this.transform.TransformDirection
//this.transform.TransformPoint
//this.transform.TransformVector
//世界转屏幕
//Camera.main.WorldToscreenPoint
//屏幕转世界
//Camera.main.ScreenToworldPoint;
//世界转视口
//Camera.main.WorldToViewportPoint
//视口转世界
//Camera.main.ViewportToworldPoint
//视口转屏幕
//Camera.main.ViewportToScreenPoint
//屏幕转视口
//Camera.main.ScreenToViewportPoint;
向量:
//知识点一向量//三维向量-Vector3//Vector3有两种几何意义//1.位置一代表一个点print(this.transform.position);//2.方向一代表一个方向print(this.transform.forward);print(this.transform.up);//知识点二两点决定一向量//A和B此时几何意义是两个点Vector3 A = new Vector3(1, 2, 3);Vector3 B = new Vector3(5, 1, 5);//求向量//此时AB和BA他们的几何意义是两个向量Vector3 AB = B - A;Vector3 BA = A - B;//知识点三零向量和负向量print(Vector3.zero);print(Vector3.forward);print(Vector3.forward);//知识点四向量的模长//Vector3中提供了获取向量模长的成员属性//magnitudeprint(AB.magnitude);Vector3 c = new Vector3(5, 6, 7);print(c.magnitude);//知识点五单位向量print(AB.normalized);//向量加法//this.transform.position += new Vector3(1, 2, 3);this.transform.Translate(Vector3.forward * 5); //向量减法//this.transform.position -= new Vector3(1, 2, 3);this.transform.Translate(-Vector3.forward * 5);//向量乘除标量this.transform.localScale *= 2;this.transform.localScale /= 2;//补充知识调试画线//画线段//前两个参数分别是起点终点Debug.DrawLine(this.transform.position, this.transform.position + this.transform.forward, Color.red);//画射线// 前两个参数分别是起点方向Debug.DrawRay(this.transform.position,transform.right, Color.green);//通过点乘判断对象方位//Vector3提供了计算点乘的方法Debug.DrawRay(this.transform.position, this.transform.forward, Color.red);//得到两个向量的点乘结果//向量a点乘AB的结果float dotResult = Vector3.Dot(this.transform.forward, target.position - this.transform.position);if (dotResult >= 0)print("它在我前方");elseprint("它在我后方");

//通过点乘推导公式算出夹角//步骤//1.用单位向量算出点乘结果//dot Result = Vector3.Dot(this.transform.forward, (target.position - this.transform.position).normalized);//2.用反三角函数得出角度print("角度" + Mathf.Acos(dotResult) * Mathf.Rad2Deg);//Vector3中提供了得到两个向量之间夹角的方法print("角度2" + Vector3.Angle(this.transform.forward, target.position - this.transform.position));

//叉乘计算print(Vector3.Cross(AA.position, BB.position));//叉乘几何意义//假设向量A和B都在X Z平面上//向量A叉乘向量B//y大于0证明B在A右侧//y小于0证明B在A左侧Vector3 vec = Vector3.Cross(BB.position, AA.position);if (vec.y > 0)print("AA在BB的右侧");elseprint("AA在BB的左侧");

相关文章:
Unity 基础函数
Mathf: //1.π-PI print(Mathf.PI); //2.取绝对值-Abs print(Mathf.Abs(-10)); print(Mathf.Abs(-20)); print(Mathf.Abs(1)); //3.向上取整-Ce il To In t float f 1.3f; int i (int)f; …...
【学习】若依源码(前后端分离版)之 “ 上传图片功能实现”
大型纪录片:学习若依源码(前后端分离版)之 “ 上传图片功能实现” 前言前端部分后端部分结语 前言 图片上传也基本是一个项目的必备功能了,所以今天和大家分享一下我最近在使用若依前后端分离版本时,如何实现图片上传…...
vue3 excel 导出功能
1.安装 xlsx 库 npm install xlsx2.创建导出函数 src/utils/excelUtils.js import * as XLSX from xlsx;const exportToExcel (fileName, datas, sheetNames) > {// 创建工作簿const wb XLSX.utils.book_new()for (let i 0; i < datas.length; i) {let data datas…...
python 相关框架事务开启方式
前言 对于框架而言,各式API接口少不了伴随着事务的场景,下面就列举常用框架的事务开启方法 一、Django import traceback from django.db import transaction from django.contrib.auth.models import User try:with transaction.atomic(): # 在with…...
vue使用ElementUI
1.安装 npm i element-ui -S 2.引入 2.1完整引入 import Vue from vue; import ElementUI from element-ui; import element-ui/lib/theme-chalk/index.css; import App from ./App.vue;Vue.use(ElementUI); 2.2按需引入 说明:为了输入时候有提示,建…...
Python做一个绘图系统3:从文本文件导入数据并绘图
文章目录 导入数据文件对话框修改绘图逻辑源代码 Python绘图系统系列:将matplotlib嵌入到tkinter 简单的绘图系统 导入数据 单纯从作图的角度来说,更多情况是已经有了一组数据,然后需要将其绘制。这组数据可能是txt格式的,也可能…...
flutter开发实战-获取Widget的大小及位置
flutter开发实战-获取Widget的大小及位置 最近开发过程中需要获取Widget的大小及位置,这时候就需要使用到了GlobalKey了和WidgetsBinding.instance.addPostFrameCallback了 一、addPostFrameCallback 该函数的作用: flutter中的界面组件Widget每一帧…...
软件测试工程师面试如何描述自动化测试是怎么实现的?
软件测试工程师面试的时候,但凡简历中有透露一点点自己会自动化测试的技能点的描述,都会被面试官问,那你结合你的测试项目说说自动化测试是怎么实现的?一到这里,很多网友,包括我的学生,也都一脸…...
Qt5兼容使用之前Qt4接口 intersect接口
1. 问题 项目卡中遇到编译报错, 错误 C2039 “intersect”: 不是“QRect”的成员 。 2. 排查过程 排查到依赖的第三方代码,使用 intersect 接口, 跟踪排查到头文件中使用了***#if QT_DEPRECATED_SINCE(5, 0)*** #if QT_DEPRECATED_SINCE…...
【云原生】Kubernetes节点亲和性分配 Pod
目录 1 给节点添加标签 2 根据选择节点标签指派 pod 到指定节点[nodeSelector] 3 根据节点名称指派 pod 到指定节点[nodeName] 4 根据 亲和性和反亲和性 指派 pod 到指定节点 5 节点亲和性权重 6 pod 间亲和性和反亲和性及权重 7 污点和容忍度 8 Pod 拓扑分布约束 官方…...
【Essential C++课后练习】纯代码(更新中)
文章目录 第一章 C编程基础1.41.51.61.71.8 第二章 面向过程的编程风格2.12.22.32.42.52.6 第一章 C编程基础 1.4 /*********************************************************************说明:试着扩充这个程序的内容:(1)要求用户同时输…...
C#仿热血江湖GClass
目录 1 C#仿热血江湖GClass 1.1 GClass32 1.2 method_4 1.3 smethod_0 C#仿热血江湖GClass public class GClass32 { private byte[] byte_0;...
[SQL智慧航行者] - 用户购买商品推荐
话不多说, 先看数据表信息. 数据表信息: employee 表, 包含所有员工信息, 每个员工有其对应的 id, salary 和 departmentid. --------------------------------- | id | name | salary | departmentid | --------------------------------- | 1 | Joe | 70000 | 1 …...
Idea配置Scala开发环境
1.首先安装scala插件: File--->Setting---->plugins,在输入框中输入scala,然后点击“Install”即可安装scala,需要稍微等待几分钟。 2 创建项目: File ---->new---->project-----Maven--->Next----输入名称(test…...
LT8711UXD 是一款高性能双通道 Type-C/DP1.4 至 HDMI2.0 转换器
LT8711UXD 1.描述 LT8711UXD是一款高性能的双车道TypeC/DP1.4到HDMI2.0转换器,设计用于将USB Type-C源或DP1.4源连接到HDMI2.0接收器。LT8711UXD集成了一个DP1.4兼容的接收机,和一个HDMI2.0兼容的发射机。此外,还包括两个CC控制器࿰…...
Android APK体积优化(瘦身)
1、基础知识: 1.1 apk结构 lib :存放so文件,对应不同的cpu架构 res :资源文件,layout、drawable等,经过aapt编译 assets :资源文件,不经过aapt编译 classes.dex :dx编译…...
python技术栈 之 单元测试中mock的使用
一、什么是mock? mock测试就是在测试过程中,对于某些不容易构造或者不容易获取的对象,用一个虚拟的对象来创建以便测试的测试方法。 二、mock的作用 特别是开发过程中上下游未完成的工序导致当前无法测试,需要虚拟某些特定对象…...
python 提取冒号和逗号内的字符串
如果你想要从字符串中提取冒号和逗号之间的内容,你可以使用正则表达式来完成。以下是使用 Python 的re模块进行提取的示例: import retext 这是一个包含:冒号,逗号:的字符串# 使用正则表达式匹配冒号和逗号之间的内容 pattern r[:](.*?)[,] matches …...
CentOS安装Postgresql
PG基本安装步骤 安装postgresql: sudo yum install postgresql-server初始化数据库:安装完毕后,需要初始化数据库并创建初始用户: sudo postgresql-setup initdb启动和停止服务: sudo systemctl start postgresql sudo…...
云原生可观测框架 OpenTelemetry 基础知识(架构/分布式追踪/指标/日志/采样/收集器)...
什么是 OpenTelemetry? OpenTelemetry 是一个开源的可观测性框架,由云原生基金会(CNCF)托管。它是 OpenCensus 和 OpenTracing 项目的合并。旨在为所有类型的可观测信号(如跟踪、指标和日志)提供单一标准。 https://opentelemetry.iohttps://www.cncf.io…...
进程地址空间(比特课总结)
一、进程地址空间 1. 环境变量 1 )⽤户级环境变量与系统级环境变量 全局属性:环境变量具有全局属性,会被⼦进程继承。例如当bash启动⼦进程时,环 境变量会⾃动传递给⼦进程。 本地变量限制:本地变量只在当前进程(ba…...
在鸿蒙HarmonyOS 5中实现抖音风格的点赞功能
下面我将详细介绍如何使用HarmonyOS SDK在HarmonyOS 5中实现类似抖音的点赞功能,包括动画效果、数据同步和交互优化。 1. 基础点赞功能实现 1.1 创建数据模型 // VideoModel.ets export class VideoModel {id: string "";title: string ""…...
在HarmonyOS ArkTS ArkUI-X 5.0及以上版本中,手势开发全攻略:
在 HarmonyOS 应用开发中,手势交互是连接用户与设备的核心纽带。ArkTS 框架提供了丰富的手势处理能力,既支持点击、长按、拖拽等基础单一手势的精细控制,也能通过多种绑定策略解决父子组件的手势竞争问题。本文将结合官方开发文档,…...
汽车生产虚拟实训中的技能提升与生产优化
在制造业蓬勃发展的大背景下,虚拟教学实训宛如一颗璀璨的新星,正发挥着不可或缺且日益凸显的关键作用,源源不断地为企业的稳健前行与创新发展注入磅礴强大的动力。就以汽车制造企业这一极具代表性的行业主体为例,汽车生产线上各类…...
Java多线程实现之Callable接口深度解析
Java多线程实现之Callable接口深度解析 一、Callable接口概述1.1 接口定义1.2 与Runnable接口的对比1.3 Future接口与FutureTask类 二、Callable接口的基本使用方法2.1 传统方式实现Callable接口2.2 使用Lambda表达式简化Callable实现2.3 使用FutureTask类执行Callable任务 三、…...
镜像里切换为普通用户
如果你登录远程虚拟机默认就是 root 用户,但你不希望用 root 权限运行 ns-3(这是对的,ns3 工具会拒绝 root),你可以按以下方法创建一个 非 root 用户账号 并切换到它运行 ns-3。 一次性解决方案:创建非 roo…...
Matlab | matlab常用命令总结
常用命令 一、 基础操作与环境二、 矩阵与数组操作(核心)三、 绘图与可视化四、 编程与控制流五、 符号计算 (Symbolic Math Toolbox)六、 文件与数据 I/O七、 常用函数类别重要提示这是一份 MATLAB 常用命令和功能的总结,涵盖了基础操作、矩阵运算、绘图、编程和文件处理等…...
Spring AI 入门:Java 开发者的生成式 AI 实践之路
一、Spring AI 简介 在人工智能技术快速迭代的今天,Spring AI 作为 Spring 生态系统的新生力量,正在成为 Java 开发者拥抱生成式 AI 的最佳选择。该框架通过模块化设计实现了与主流 AI 服务(如 OpenAI、Anthropic)的无缝对接&…...
Mac下Android Studio扫描根目录卡死问题记录
环境信息 操作系统: macOS 15.5 (Apple M2芯片)Android Studio版本: Meerkat Feature Drop | 2024.3.2 Patch 1 (Build #AI-243.26053.27.2432.13536105, 2025年5月22日构建) 问题现象 在项目开发过程中,提示一个依赖外部头文件的cpp源文件需要同步,点…...
代理篇12|深入理解 Vite中的Proxy接口代理配置
在前端开发中,常常会遇到 跨域请求接口 的情况。为了解决这个问题,Vite 和 Webpack 都提供了 proxy 代理功能,用于将本地开发请求转发到后端服务器。 什么是代理(proxy)? 代理是在开发过程中,前端项目通过开发服务器,将指定的请求“转发”到真实的后端服务器,从而绕…...
