Unity 基础函数

news2024/11/27 15:29:57

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中提供了获取向量模长的成员属性
        //magnitude
        print(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("它在我前方");
        else
            print("它在我后方");
        

 

//通过点乘推导公式算出夹角
        //步骤
        //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的右侧");
        else
            print("AA在BB的左侧");

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

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

相关文章

无人机光伏巡检系统的全新作用解析,提升效率保障安全

随着光伏发电行业的快速发展,光伏电站的规模越来越大,光伏维护和巡检成为一个巨大的挑战。为解决传统巡检方法的低效率和安全风险问题,无人机光伏巡检系统应运而生,并成为提升光伏巡检效率和保障安全的利器。 首先,无人…

我的Python教程:使用Pyecharts画关系节点图

示例源码1 from pyecharts import options as opts from pyecharts.charts import Graphnodes [{"name": "结点1", "symbolSize": 10},{"name": "结点2", "symbolSize": 20},{"name": "结点3&qu…

【泊松过程数学公式推导】

latex常见用法如下:https://blog.csdn.net/ViatorSun/article/details/82826664 高等教育出版社 **浙江大学《概率论与数理统计》**一 书关于泊松过程的推导如下: 理解了上面的思路才能更好的理解泊松过程的数学模型和本质。 上面的思路是: …

【LeetCode 75】第二十二题(1657)确定两个字符串是否接近

目录 题目: 示例: 分析: 代码运行结果: 题目: 示例: 分析: 给我们两种操作,问我们可不可以通过两种操作将word1转变成word2. 第一种操作是交换两个现有字符的位置. 那么这就意味着,只要word1和word2有相同的字符并且相同字符的数量一致,那么word1就能通过交换位置来转变…

Shiro是什么?为什么要用Shiro?

前言 本文小新为大家带来 Shiro入门概述 相关知识,具体内容包括Shiro是什么,为什么要用 Shiro,Shiro与Spring Security 的对比,Shiro的基本功能(包括:基本功能框架,功能简介)&#x…

org.springframework.beans.factory.UnsatisfiedDependencyException:

今天碰到了一个数据库表中有2个主键,结果利用mp生成的po类,出现了一系列问题,报了这个错误,一看是这个实体类自带了2个filedId注解,运行springboot能不报错吗?报错信息挺有意思的,所以写了这篇博…

服务器时钟同步

服务器时钟同步 文章目录 服务器时钟同步背景windows时钟同步Linux机器上的时钟同步Centos时钟同步Ubuntu系统时钟同步 查看是否同步的命令 背景 运维,XXX服务器慢了2秒,导致XXX业务没有正常执行,请立即排查为啥会有时钟不同步的问题。 首先…

无涯教程-Perl - continue 语句函数

可以在 while 和 foreach 循环中使用continue语句。 continue - 语法 带有 while 循环的 continue 语句的语法如下- while(condition) {statement(s); } continue {statement(s); } 具有 foreach 循环的 continue 语句的语法如下- foreach $a (listA) {statement(s); } co…

React Native从文本内容尾部截取显示省略号

<Textstyle{styles.mMeNickname}ellipsizeMode"tail"numberOfLines{1}>{userInfo.nickname}</Text> 参考链接&#xff1a; https://www.reactnative.cn/docs/text#ellipsizemode https://chat.xutongbao.top/

C++学习——认识什么是STL以及string类的使用

目录 一&#xff1a;认识STL 1.什么是STL 2.STL当中的各种功能 3.STL的重要性 二&#xff1a;认识string类 1.什么是string 2.string类相关的使用方法 Tips1 &#xff1a;constructor Tips2&#xff1a;destructor Tips3&#xff1a;iterator Tips4&#xff1a;capacity ​编辑…

数学建模学习(9):模拟退火算法

模拟退火算法(Simulated Annealing, SA)的思想借 鉴于固体的退火原理&#xff0c;当固体的温度很高的时候&#xff0c;内能比 较大&#xff0c;固体的内部粒子处于快速无序运动&#xff0c;当温度慢慢降 低的过程中&#xff0c;固体的内能减小&#xff0c;粒子的慢慢趋于有序&a…

SQL 相关子查询 和 不相关子查询、Exists 、Not Exists

不相关子查询 子查询的查询条件不依赖于父查询&#xff0c;称不相关子查询。子查询可以单独运行的 select stu_id,sex,age from student t where sex(select sexfrom studentwhere stu_id10023 )相关子查询 关联子查询 子查询的查询条件依赖于父查询&#xff0c;称为 相关子…

【Hystrix技术指南】(6)请求合并机制原理分析

[每日一句] 也许你度过了很糟糕的一天&#xff0c;但这并不代表你会因此度过糟糕的一生。 [背景介绍] 分布式系统的规模和复杂度不断增加&#xff0c;随着而来的是对分布式系统可用性的要求越来越高。在各种高可用设计模式中&#xff0c;【熔断、隔离、降级、限流】是经常被使…

跨境商城系统源码的优势,助力企业海外扩张

跨境电商发展背景与趋势 随着全球化的推进和互联网技术的快速发展&#xff0c;跨境电商已成为企业海外拓展的重要途径。然而&#xff0c;跨境电商面临着诸多挑战&#xff0c;如复杂的海外市场、文化差异、海关监管等。为了解决这些问题&#xff0c;企业可以借助跨境商城系统源码…

连接SAP rfc一直报错如何解决?

问题如下&#xff1a; 代码&#xff1a; static String ABAP_AS_POOLED "ABAP_AS_WITH_POOL";private static Logger log;static {Properties connectProperties new Properties();connectProperties.setProperty(DestinationDataProvider.JCO_ASHOST, "IP&q…

vue table动态合并, 自定义合并,参照合并,组合合并

<template><div><el-table:data"tableData":span-method"objectSpanMethod"border:header-cell-style"{ textAlign: center }"><el-table-column prop"area" label"区域" align"center">…

分班问题难?分班查询系统为你解决分班难题

老师们在教学工作中&#xff0c;特别是每个新学年开始&#xff0c;都会面临一个重要的任务——分班。除了分班名单的确定&#xff0c;分班查询也同样困扰老师们&#xff01;在分班过程中面临的难题&#xff0c;最关键的一点是在完成分班名单确定后&#xff0c;分班查询的通知显…

Win7之MS12-020死亡蓝屏

一&#xff0c;何为死亡蓝屏 1&#xff0c;简介 死亡蓝屏利用RDP协议&#xff0c;基于3389远程桌面端口对目标主机进行攻击&#xff0c;使目标机系统瘫痪导致蓝屏&#xff0c;严重影响着计算机的正常使用。 2&#xff0c;条件 1>目标操作系统未开启防火墙和杀毒软件等 2&g…

STM32 LoRa源码解读

目录结构&#xff1a; SX1278 |-- include | |-- fifo.h | |-- lora.h | |-- platform.h | |-- radio.h | |-- spi.h | |-- sx1276.h | |-- sx1276Fsk.h | |-- sx1276FskMisc.h | |-- sx1276Hal.h | |-- sx1276LoRa.h | -- sx1276LoRaMisc.h – src |-- fifo.c |-- lora.c |-- …

Neo4j笔记-数据迁移(导出/导入)

这里先说明以下几点&#xff1a; Neo4j在4.0下版本默认的库名是&#xff1a;graph.db Neo4j在4.0上版本默认的库名是&#xff1a;neo4j.db 不管是Neo4j&#xff0c;还是Neo4j Desktop&#xff0c;都会在bin目录下有neo4j、neo4j-admin软件。在conf目录下&#xff0c;有neo4j.…