【unity3d学习笔记】unity常用API解析
来源:互联网 发布:角逐超高空知乎 编辑:程序博客网 时间:2024/06/05 17:21
记录并解析unity中经常用到的API
1.Camera
1.pixelRect
pixelRect属性:摄像机渲染区间
此属性用于设置camera被渲染到屏幕中间的坐标位置。pixelRect属性与rect功能类似,不同的是pixelRect以实际像素大小来设置显示视口的位置,而rect以单位化方式设置显示视口的位置。
例设置camera.pixelRect (x0,y0,w,h), x0为视口右移的像素大小,y0为视口上移的像素大小,w为camera.pixelWidth,h的值为camera.pixelHeight.
2.Mathf
1.PingPong
public static float PingPong(float t,float length)
此方法用于模拟乒乓球的往复运动。设f = Mathf.PingPong (t, h),其中f 、t、h均为 float值类型。
(1)若h>0,则
f=|t| % h, 当 |t| % 2h <= h时 f=h - |t| % h, 当 |t| % 2h > h时
(1)若h<0,则
f=2h + |t| % |2h|, 当| t | % |2h| <= h时 f= - |t| % |2h|, 当| t | % |2h| > h时
要想让物体进行PingPong运动, t 必须是一个不断改变的值 ,常用Time.time 来当作 t 值。f 会从 0 开始变化到 h ,然后再从 h 变化到0.
3.Rigidbody
1.SweepTest
语法:
public bool SweepTest(Vector3 direction, out RaycastHit hitInfo, float maxDistance = Mathf.Infinity, QueryTriggerInteraction queryTriggerInteraction = QueryTriggerInteraction.UseGlobal);
2.WakeUp
语法:public void WakeUp( );
功能:此方法用于将刚体从休眠状态唤醒。要将刚体从休眠状态唤醒,除了调用此方法以外,在以下四种情况发生时,刚体会被自动唤醒:
- 其他刚体与休眠中的刚体发生了碰撞
- 使用关节连接的其他刚体发生了移动
- 刚体的属性发生了改变
- 给休眠中的刚体施加了一个外力
3.OnTriggerXXX和OnCollisionXXX
设现有A、B两个物体,且A物体正向B移动,B物体保持静止状态,如图所示:
详解:
若A中无Rigidbody组件,则B中无论是否含有Rigidbody组件,A都将穿过B物体,并且A和B脚本中的OnTriggerXXX和OnCollisionXXX方法都不会调用。
若A中含有Rigidbody组件,则B中无论是否含有Rigidbody组件,只要B中含有Collider类组件,A和B脚本中的OnTriggerXXX或OnCollisionXXX方法就会被调用。到底调用哪一种要看A和B物体中的Collider类组件中的IsTrigger是否被选中。总之,要激活OnTriggerXXX或OnCollisionXXX方法必须使移动的物体中含有Rigidbody组件
若A中含有Rigidbody组件,B中含有Collider类组件,当A和B物体中的Collider类组件的IsTrigger都没有选中时,A和B脚本中(两个物体)的OnCollisionXXX类的方法就会被调用
若A中含有Rigidbody组件,B中含有Collider类组件,当A和B物体中的Collider类组件的IsTrigger至少有一个被选中时,A和B脚本中(两个物体)的OnTriggerXXX静态方法会被调用
4.Transform
1.localPosition
public Vector3 localPosition { get; set; }
此属性用于设置或返回GameObject在局部坐标系中的位置,若无父级对象则和属性Transform.position返回值相同。
transform.localPosition的值受父级对象lossyScale的影响,当transform.localPosition的值增加1时,transform.position的值的增量不一定是1,而是在相对父级坐标系中增加了父级的lossyScale倍大小的值。例如物体cube2的父级是cube1,cube1的父级是cube0,cube1的localScale为Vector3(c1x,c1y,c1z),cube0的localScale为Vector3(c0x,c0y,c0z),假设cube0和cube1都没有发生旋转,则GameObject对象在世界坐标系中的位置为:
transform.position.x = cube0.localPosition.x+cube1.localPosition.x*c0x+transform.localPosition.x*c1x*c0x;
transform.position.y和transform.position.z与此相同。
当物体cube2的局部坐标值localPosition增加Vector3(tx,ty,tz)时,其世界坐标值position的增加值分别为:
_x=tx*c1x*c0x;
_y=ty*c1y*c0y;
_z=tz*c1z*c0z;
5.Vector3
1.RotateTowards
基本语法:public static Vector3 RotateTowards( Vector3 current, Vector3 target, float maxRadiansDelta, float maxMagnitudeDelta);
其中参数current为起始点坐标,参数target为目标点坐标,参数maxRadiansDelta为角度旋转系数,参数maxMagnitudeDelta为模长系数。
功能说明:
此方法用于返回从参数current到target的球形旋转插值向量,此方法可控制插值向量的角度和模长。例如,设有Vector3实例A、B和C,有float类型数值R和L,向量A和B的夹角的弧度为e,则执行以下程序代码后
C=Vector3.RotateTowards(A,B,R,L);
- 当R∈[0,e]时,向量C和A的弧度为R,即当R从0增加到e时,向量C与A的角度也会线性增加到e。向量C的模长为向量A的模长加上L的值,即|C|=|A|+L.
- 当R<0时,向量C会沿着A到B的反向量旋转。
- 当R>e时,参数R以e来计算角度,即R大于e时C与B的方向相同。
- 总之,R值决定了向量C的方向,而L影响了C的模长,无论L取值多少,当R>e时向量C与B的方向总是相同的。
- 向量A、B和C在同一平面上。
2.Slerp
基本语法:public static Vector3 Slerp(Vector3 from, Vector3 to, float t);
其中参数from为插值起始点坐标,参数to为插值结束点坐标,参数t为插值系数。
功能说明:此方法用于返回从参数from点到参数to点的球形插值向量。例如,设现有Vector3实例A和B,A ( ax,ay,az), B( bx,by,bz) A和B的夹角为e,则执行如下代码后
Vector C = Vector3.Slerp(from,to,t);
- 当t<=0时,向量C=A;
- 当t>=1时,向量C=B;
- 当t从0增加到1时,向量C会从起始点A绕着A*B(即向量A和B的叉乘)的方向匀速移动到向量B,此处的匀速时指角度旋转的匀速,即向量C与B的夹角k=e*(1-t),这样便可以确定向量C的方向。而向量C的模长计算公式则为:
|C|=ax2+ay2+az2−−−−−−−−−−−−−√+(bx2+by2+bz2−−−−−−−−−−−−√−ax2+ay2−az2−−−−−−−−−−−−−√)∗t - 当向量A和B中的某个分量的值都为0时,比如它们的y轴分量都为0,即ay=by=0时,则A将绕着y轴在xy平面匀速旋转向B移动,并且在移动过程中C.y的值始终为0.
- 【unity3d学习笔记】unity常用API解析
- 【Unity3D】常用API学习笔记
- Unity常用API学习
- 【Unity开发】Unity3d学习笔记记录
- Unity3D学习笔记10:Unity调用DLL
- 【unity3d学习笔记】unity中创建全局变量
- [Unity3d自学笔记001]-如何查看Unity API文档
- Unity3d基础入门之常用API的总结与解析
- 黑马学习笔记--常用API
- unity学习之Unity3D 脚本常用方法快速参考
- Unity API常用方法和类的解析
- Unity3d-C#常用API
- Unity3D常用API
- unity3d基础学习笔记5:常用函数
- Unity3D学习笔记(1)-简单的unity&n…
- Unity3D 学习笔记(四) Unity连接MySQL数据库
- Unity3D学习笔记(二)Unity的JavaScript基础
- Unity3D学习笔记(三)Unity的C#基础
- 周末训练笔记+I Hate It(9.3)
- Nginx安装与使用
- 使用Service描述的服务与springAop冲突导致服务无法暴露
- Linux题(1)
- 虚拟机的几种网络连接方式
- 【unity3d学习笔记】unity常用API解析
- NOIP2016提高组D1T1玩具谜题
- BZOJ 3585/3339 mex/Rmq Problem 莫队
- MATLAB 2016a 安装及破解教程
- 实现Asp.Net里的Page页面上的函数可有可无(Page_Init等)
- 正式开启我的CSDN人生
- PADS9.5原理图常用颜色设置
- hdu1520-树形dp-Anniversary party
- 锁