IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 游戏开发 -> unity3D数学 -> 正文阅读

[游戏开发]unity3D数学

一、向量的定义

向量:有大小有方向
与向量相对的量成为标量:即只有大小没有方向的量。例如物体移动中的平均速率、路程。
模:向量的长度标准化(Normalizing):保持方向不变,将向量的长度变为1.
单位向量:长度为1的向量。
零向量:各分量均为0的向量
向量运算——加减:向量的加法(减法)为各个分量分别相加(相减)。在物理上可以用来计算两个里的合力,或者几个速度份量的叠加。

二、向量的加减法

每个坐标都进行加减(x与x,y与y,z与z)
如果v1和v2都表示一个点的话,那么v3的方向是从v1开始指向v2的一个带有箭头的射线,此时v3就是一个向量
如果v1和v2都表示一个向量的话,那么v3是一个从v1的尾部指向v2的头部的一个带有方向箭头的一条射线 ,减法则相反

三、点乘

点乘:向量·向量=标量
每个坐标都进行相乘(x与x,y与y,z与z)
Vector3.Dot():计算点乘的方法

//1、用单位向量算出点乘结果
float pos = Vector3.Dot(transform.forward, (target.position - transform.position).normalized);
//2、用反三角函数得出角度(0--180)
print("角度为:" + Mathf.Acos(pos) * Mathf.Rad2Deg);

//用Vector3计算两个向量的夹角
print("角度2为:" + Vector3.Angle(transform.forward, target.position - transform.position));

四、叉乘

叉乘:向量X向量=向量
向量A(XA,YA,ZA)
向量B(XB,YB,ZB)
AXB=(XC,YC,BC)
XC=YAZB-ZAYB
YC=XAZB-ZAXB
ZC=XAYB-YAXB
得出来的结果(XC,YC,BC)同时垂直向量A和向量B,又称为他们的法线
Vector3.Cross():计算叉乘的方法

五、注释旋转

function LookRotation (forward : Vector3, upwards : Vector3 = Vector3.up) : void 
传入的两个参数分别代表前方盯着的方向以及自己的上方向。它可以让一个GameObject转动脑袋盯着另一个物体。
    public Vector3 target;   // cube的朝向目标, 初始值为(0, 3, 0)
    void Update()
    {
// 注意, 此处Vector3.up并不一定与target - cube.position垂直
        cube.rotation = Quaternion.LookRotation(target - cube.position, Vector3.up); 

        Debug.DrawLine(Vector3.zero, cube.forward, Color.blue); // 绘制每根轴
        Debug.DrawLine(Vector3.zero, cube.right, Color.red);
        Debug.DrawLine(Vector3.zero, cube.up, Color.green);
    }
LookAt()LookRotation()的参数都相似,但前者是将游戏对象的z轴指向参数所表示的那个点,而后者是将游戏对象的z轴指向参数所表示的向量的方向;

六、Invoke和InvokeRepeating

1Invoke(methodName: string, time: float): void;
methodName:方法名      time:多少秒后执行

案例:点击鼠标左键,3秒后克隆一个游戏对象
public GameObject cube;
	void Update () 
{
        if (Input.GetMouseButtonDown(0))
        {
			Invoke("CreateNewCube", 3f);
        }
	}
	void CreateNewCube()
    {
		Instantiate(cube);
}2InvokeRepeating(methodName: string, time: float, repeatRate: float): void;
methodName:方法名    time:多少秒后执行   repeatRate:重复执行间隔
案例:点击鼠标左键,3秒后每隔2秒克隆一个游戏对象

public GameObject cube;
	void Update () 
{
        if (Input.GetMouseButtonDown(0))
        {
			InvokeRepeating("CreateNewCube", 3f,2f);
		}
	}
	void CreateNewCube()
    {
		Instantiate(cube);
}

CancelInvoke:取消该脚本上的所有延时方法
int i = 0;
	void CreateNewCube()
    {
		Instantiate(cube);
		i++;
		print("执行次数:"+i);
        if (i == 5)
        {
			CancelInvoke();
        }
}

七、Mathf

1)Mathf.Abs:绝对值
(2)Mathf.Clamp(float value,float min,float max)
在 Mathf.Clamp 中传入三个参数:value,min,max
限制 value的值在min,max之间,如果value大于max,则返回max,如果value小于min,则返回min,否者返回value;
案例:飞机飞行的范围限制
float x = Mathf.Clamp(transform.position.x, -6.66f, 6.66f);
float z = Mathf.Clamp(transform.position.z, -35.5f, -11.5f);
transform.position = new Vector3(x, 0, z);3)Mathf.Ceil上限值
     Ceil (f : float) : float 
返回 f 指定数字或表达式的上限值。数字的上限值是大于等于该数字的最接近的整数。
(4)Mathf.Floor下限值
	Floor (f : float) : float 
返回参数 f 中指定的数字或表达式的下限值。下限值是小于等于指定数字或表达式的最接近的整数。
(5)Mathf.Max最大值
Max (a : float, b : float): float 
返回两个或更多值中最大的值。

Mathf.Min最小值
 function Min (a : float, b : float): float 
返回两个或更多值中最小的值。
(6)Mathf.Repeat重复
 Repeat (t : float, length :float) : float 
循环数值t,0到length之间。t值永远不会大于length的值,也永远不会小于0。
案例:立方体循环往复的放大
void Update () 
{
			float a = Mathf.Repeat(Time.time, 2);
			transform.localScale = new Vector3(a, a, a);
}

Mathf.PingPong乒乓
PingPong (t : float, length: float) : float 
0到length之间往返。t值永远不会大于length的值,也永远不会小于0。
返回值将在0和length之间来回移动。
案例:立方体循环往复的放大缩小
void Update () 
{
			float a = Mathf.PingPong(Time.time, 2);
			transform.localScale = new Vector3(a, a, a);
}7)Mathf.PI圆周率
PI(读pai)的值,也就是圆周率(π)的值3.14159265358979323846…
(8)Mathf.Pow次方
 Pow (f : float, p : float): float 
计算并返回 f 的 p 次方。
(9)Mathf.RoundToInt四舍五入到整数
 RoundToInt (f : float) :int 
返回 f 指定的值四舍五入到最近的整数。
如果数字末尾是.5,因此它是在两个整数中间,不管是偶数或是奇数,将返回偶数。

Mathf.Round四舍五入
 Round (f : float) : float 
返回浮点数 f 进行四舍五入最接近的整数。
如果数字末尾是.5,因此它是在两个整数中间,不管是偶数或是奇数,将返回偶数。
(10)Mathf.Sqrt平方根
 Sqrt (f : float) : float 
计算并返回 f 的平方根。

  游戏开发 最新文章
6、英飞凌-AURIX-TC3XX: PWM实验之使用 GT
泛型自动装箱
CubeMax添加Rtthread操作系统 组件STM32F10
python多线程编程:如何优雅地关闭线程
数据类型隐式转换导致的阻塞
WebAPi实现多文件上传,并附带参数
from origin ‘null‘ has been blocked by
UE4 蓝图调用C++函数(附带项目工程)
Unity学习笔记(一)结构体的简单理解与应用
【Memory As a Programming Concept in C a
上一篇文章      下一篇文章      查看所有文章
加:2021-11-28 11:36:17  更:2021-11-28 11:36:53 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/27 22:24:05-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码