unity nearclipplane clipplane多大合适

下次自动登录
现在的位置:
& 综合 & 正文
Unity3D Unity Camera摄像机类 – 相机的函数方法
Unity3D Unity Camera Class 摄像机类
inherits from
A Camera is a device through which the player views the
摄像机是一种设备, 通过它来看世界
A screen space point is defined in pixels. The
bottom-left of the screen is (0,0); the right-top is (pixelWidth, pixelHeight). The z position
is in world units from the camera 屏幕空间点用像素定义. 屏幕的左下方为 (0, 0); 右上方为 (pixelWidth, pixelHeight). Z轴的位置是以世界单位衡量到摄像机的距离
A viewport space point is normalized and relative to the
camera. The bottom-left of the camera is (0,0); the top-right is (1,1). The z
position is in world units from the camera
视口空间点是规范化的并相对于摄像机的. 摄像机的左下方为 (0,
0); 右上方为 (1, 1).
Z轴的位置是以世界单位衡量到摄像机的距离
A world space point is defined in global coordinates (eg.Transform.position)
世界空间中是以全局坐标定义的 (例如
Transform.position)
See Also: camera
参见: 摄像机组件
Variables 变量
fieldOfView
The field of view of the camera in degrees.
摄像机的视野, 以度为单位
nearClipPlane
The near clipping plane distance
近裁剪平面的距离
farClipPlane
The far clipping plane distance
远裁剪平面的距离
orthographicSize
Camera's half-size
when in orthographic mode.
在正交模式下摄像机的一半尺寸
orthographic
Is the camera orthographic (true) or perspective (false)?
摄像机是正交的 (真) 或透视的 (假)?
Camera's depth in the camera rendering order
摄像机在渲染顺序上的深度
The aspect ratio (width divided by height)
长宽比 (宽度除以高度)
cullingMask
This is used to render parts of the scene selectively
用来选择性的渲染部分场景
backgroundColor
The color with which the screen will be cleared
屏幕将被清理为这个颜色
Where on the screen is the camera rendered in normalized
coordinates
摄像机被渲染到屏幕归一化坐标中的位置
Where on the screen is the camera rendered in pixel
coordinates
摄像机被渲染到屏幕像素坐标中的位置
targetTexture
Destination render texture (Unity Pro only).
目标渲染纹理 (该方法只有 Unity 专业版提供)
pixelWidth
How wide is the camera in pixels (Read Only)
摄像机的像素宽度 (只读)
pixelHeight
How tall is the camera in pixels (Read Only)
摄像机的像素高度 (只读)
cameraToWorldMatrix
Matrix that transforms from camera space to world space
(Read Only)
从摄像机空间到世界空间变换矩阵 (只读)
worldToCameraMatrix
Matrix that transforms from world to camera space
从世界到摄像机空间的变换矩阵
projectionMatrix
Set a custom projection matrix
设置一个自定义的投影矩阵
Get the world-space speed of the camera (Read Only)
获取世界空间中摄像机的速度 (只读)
clearFlags
How the camera clears the background
摄像机如何清除背景
Functions 函数
ResetWorldToCameraMatrix
Make the rendering position reflect the camera's position
in the scene
在场景中让渲染位置反映相机位置
ResetProjectionMatrix
Make the projection reflect normal camera's parameters
让投影反映正常的相机参数
ResetAspect
Revert the aspect ratio to the screen's aspect ratio
返回长宽比为屏幕的长宽比
WorldToScreenPoint
Transforms position from world space into screen space.
从世界空间到屏幕空间变换位置
WorldToViewportPoint
Transforms position from world space into viewport space.
从世界空间到视口空间变换位置
ViewportToWorldPoint
Transforms position from viewport space into world space.
从视口空间到世界空间变换位置
ScreenToWorldPoint
Transforms position from screen space into world space
从屏幕空间到世界空间变换位置
ScreenToViewportPoint
Transforms position from screen space into viewport
从屏幕空间到视口空间变换位置
ViewportToScreenPoint
Transforms position from viewport space into screen
从视口空间到屏幕空间变换位置
ViewportPointToRay
Returns a ray going from camera through a viewport point.
返回从相机出发穿过视点的一个射线
ScreenPointToRay
Returns a ray going from camera through a screen point
返回从相机出发穿过屏幕点的一个射线
Render the camera manually
手动渲染相机
RenderWithShader
Render the camera with shader replacement
用着色替换渲染相机
SetReplacementShader
Make the camera render with shader replacement
使相机用着色替换来渲染
ResetReplacementShader
Remove shader replacement from camera
从相机上删除着色替换
RenderToCubemap
Render into a cubemap from this camera
从这台相机渲染到一个体贴图
Makes this camera's settings match other camera
使这台相机的设置与其他相机相同
Messages Sent 信息传递
OnPreCull is called before a camera culls the scene
OnPreCull在相机开始裁剪场景之前调用
OnPreRender
OnPreRender is called before a camera starts rendering
OnPreRender在相机开始渲染场景之前调用
OnPostRender
OnPostRender is called after a camera has finished
rendering the scene
OnPostRender在相机渲染场景之后调用
OnRenderImage
OnRenderImage is called after all rendering is complete
to render image
OnRenderImage在所有渲染完成后被调用, 来渲染图片
OnRenderObject
OnRenderObject is used to render your own objects usingGraphics.DrawMeshNow or other functions
OnRenderObject被用来渲染你自己的对象, 使用Graphics.DrawMeshNow或者其他函数
OnWillRenderObject
OnWillRenderObject is called once for each camera if the
object is visible
如果对象可见, 每个相机都会调用OnWillRenderObject
Class Variables 类变量
main The first enabled camera tagged "MainCamera" (Read Only)
第一个启用的被标记为 "MainCamera" 的相机 (只读)
The camera we are currently rendering with, for low-level
render control only (Read Only) 当前用于渲染的相机, 只用于低级的渲染控制 (只读)
allCameras
Returns all enabled cameras in the scene
返回场景中所有启用的相机
Inherited members 继承自成员
Inherited Variables 继承自变量
对象 . 组件 . 行为
Inherited Functions 继承自函数
对象 . 组件
Inherited Class Functions 继承自类函数
&&&&推荐文章:
【上篇】【下篇】  Unity(游戏引擎)一般指Unity3DUnity的logo  Unity是由Unity Technologies开发的一个让玩家轻松创建诸如三维视频游戏、建筑可视化、实时三维动画等类型互动内容的综合型游戏开发创作工具,是一个全面整合的专业游戏引擎。Unity类似于Director,Blender,Virtools或Torque Game Builder等利用交互的图型化开发环境为首要方式的软件其编辑器运行在Windows 和Mac OS X下,可发布游戏至Windows、Mac、Wii、iPhone、Windows phone 8和Android平台。也可以利用Unity web player插件发布网页游戏,支持Mac 和Windows的网页浏览。它的网页播放器也被Mac widgets所支持。Unity分成Free与Pro版。Free版提供试用30天Pro版的功能。  中文名:优美缔3D  外文名:Unity3d  分 类:Unity3D  与之相关:Unity3D-CN中文网 游戏蛮牛产品特色  综合编辑通过Unity简单的用户界面,玩家可以完成任何工作地形低端硬件亦可流畅运行广阔茂盛的植被景观  图形动力对DirectX和OpenGL拥有高度优化的图形渲染管道联网从,单人游戏,到全实时,多人游戏  资源导入支持所有主要,文件格式,并能和大部分相关,应用程序,协同工作物理特效内置的NVIDIAPhysX,物理引擎,带给玩家生活的互动  一键部署让玩家的作品在多平台呈现音频和视频实时三维图形混合,音频流,视频流  Wii的发布让业界最流行的游戏平台,软件,更容易开发Unity资源服务器资源服务器是一个附加的包括,版本控制,的产品  iPhone发布让革命性的游戏开发降临革命性的设备光影提供了具有柔和阴影与烘焙的高度完善的光影渲染系统  着色器着色器系统整合了易用性,灵活性和高性能文档为玩家提供逐步的指导,文档和实例方案常见问题  1:天空盒有接缝怎么解决?  答:在贴图导入设置里设置WrapMode为"Clamp"。  2:DDS格式怎么不显示?  答:Unity不支持DDS格式,Unity会将除DDS外的其他格式图片具有为DDS同样的优化。  3:Unity如何动态载入外部模型等文件?  答:可以使用AssetBundle。  4:脚本编辑器有语法提示吗?  答:有的,Win版使用Ctrl+I,Mac版使用Ctrl+&。  5:如何使用烘焙贴图(多重纹理)?  答:不要使用Shell贴图,直接将烘焙图赋予贴图的"自发光"通道之上。  6:怎么屏蔽Webplayer右键菜单?  答:¶m name="disableContextMenu" value="true" /&  7:为什么水面没有实时反射效果?  答:只有专业版才支持这种反射效果。  8:怎么做摄像机漫游动画?  答:Max正常制作摄像机漫游动画,倒到Unity中后,将Unity的Camea拖拽到Max导出的摄像机Gameobject物体之上,作为其子物体即可。  9:¶m name="logoimage" value="Logo文件名" /&,¶m name="progressbarimage" value="进度条名" /&,¶m name="progressframeimage" value="进度条外框名" /&。  答: 文件名" /&,进度条名" /&,进度条外框名" /&。。  10:GUI上怎么使用中文字?  答:导入任意中文字体,然后定义GUISkin字体为该字体即可。  11:购买一个授权可以***几台电脑?  答:可以***于2个系统之上比如一个Win版一个Mac版。  12:Max文件扔到Unity中怎么说导入失败?  答:下载最新版Fbx插件,用Max导出Fbx文件然后扔Unity中。  13:如何不让摄像头穿透模型,离模型近了就像模型露面了?  答:设置相机的Nearclipplane,调小一点,但是不要给负数。  14:怎么用双面贴图?  答:Unity中可设置双面Shader,最简单有效的办法是直接做成双面的实体模型.复杂一点的方法可以在材质脚本中的相应的SubShader中的一个Pass块中加入culloff,即关闭反面裁剪。  15:导入的Fbx模型尺寸小于Max中的尺寸?  答:在Unity中该文件的导入设置中设置缩放因子为1。  16:如何给相机添加Glow效果?  答:选中相机对象,在菜单中选中Component-ImageEffects-Glow赋予该组件即可(专业版才支持此特效)。  17:怎么设置Webplayer默认尺寸?  答:到菜单Edit-ProjectSettings-Player中设置DefaultWebScreen尺寸即可。  18:怎么设置可执行文件的启动Banner?  答:到菜单Edit-ProjectSettings-Player中设置ResolutionDialogBanner。  19:如何设置雾效?  答:到菜单Edit-RenderSettings中开启Fog及设置FogColor等即可。  20:如何设定默认Skybox天空盒?  答:到菜单Edit-RenderSettings中设置SkyboxMaterial即可.(欢迎加入unirt3d问答团队,参考资料)  21:如何下载Unity3d游戏开发工具?  Unity3D下载软件开发工具和游戏引擎套件(Unity)v4.1.3下载Unity3d4.1.3下载是一个让你轻松创作的多平台的游戏开发工具,是一个全面整合的专业游戏引擎综合编辑通过Unity简单的用户界面  22.unity3d虚拟现实的设计流程?  答:max制作模型,导出fbx,导入unity,设计相机代码,设计ui,build。版本介绍  Windows版本:unity3d4.3.3  Mac版本:unity3d4.2.1  (这个版本只是小修部分,没有增加新的功能。)  大陆发布版本  Unity3DPRO虚拟现实、跨平台应用程序开发引擎(商业版)  UnityiOSPro移动终端发布平台  Unity3DPRO虚拟现实、跨平台应用程序开发引擎(教育版)  日,UnityTechnologies公司正式推出Unity4.0版本,新加入对于DriectX11的支持和Mecanim动画工具,以及为用户提供Linux及AdobeFlashPlayer的部署预览功能。  Unity是免费的,官方为UnityPro和UnityiOSPro提供30天全功能试用期相关新闻  研讨会  PC、MAC、iPhone、ipad、PS和Xbox360等众多平台的引擎效能成为了业界关心的焦点问题,而Unity3D游戏引擎技术研讨会在中国的召开,无疑吸引了各家厂商的目光。  在上海举行的本届研讨会,由韩国国民大学游戏教育学院和中国东华大学联合举办。大会不仅是对Unity3D游戏引擎技术的介绍,更通过此次会议提升中国先进游戏技术的开发能力,培养后备研发人员。  Unity3D游戏引擎技术研讨会最早于2010年5月在韩国举行。据悉,十种以上的新引擎开发,都是采用了Unity3D游戏引擎技术。部分开发商利用2010年ChinaJoy展会之机,也展示了该引擎的运行效果。已有不少厂商同开发商签订了提前的引擎预定协议。  Unity引擎宣布放弃支持Flash平台  相信很多独立游戏以及移动游戏开发者都不会对Unity引擎感到陌生。日Unity公司CEODavidHelgason发布消息称,游戏引擎Unity今后将不再支持Flash平台,且于今天起不再销售针对Flash开发者的软件授权。相关游戏游戏教程界面  网页游戏  · 2012年 坦克英雄(网页游戏)  · 2012年新仙剑Online  · 2012年 蒸汽之城  · 2012年 绝代双骄  · 2012年 Touch  · 2012年 纵横无双  · 2012年 将魂三国  · 2012年 天神传  · 2012年QQ乐团  · 2012年 北欧英灵传  · 星之战记  · 骑士的远征(已停止运营)  · 萌战记  · 推倒Online  · 格子RPG  · 图腾王  · 争锋OnLine  · 喷喷战机(已停止运营)  · 魔偶给我冲  · 猪仙  · 木乃伊OL (The Mummy Online)  · 魔晶星球  · 将神  · 天宠岛  · Kartuga  · 极限摩托车2 (Trial Xtreme 2)  · ***战世界(OffensiveCombat)  · 梦幻国度2  · UberStrike  · Kartuga  · Robocraft手机游戏  · 失落帝国  · 地牢女王[1]  · MemoLine!  · 炉石传说  · 酷酷爱魔兽  · 捣蛋猪(Bad Piggies)  · 神庙逃亡2(Temple Run 2)  · 武士2: 复仇  · 亡灵杀手:夏侯惇  · 蛮王记  · 极限摩托车2 (Trial Xtreme 2)  · 神庙逃亡:勇敢传说(Temple Run:Brave)  · Bladeslinger  · 火车危机(Train Crisis)  · 血色屋顶(Blood Roofs)  · 猎鹿人(Deer Hunter Reloaded)  · 果冻防御(Jelly Defense)  · ChopChop Tennis  · 9号计划之地下雅利安  · 暗影之***:死亡禁地 (Shadowgun: DeadZone)  · Komodo Crunchtime:Ultimate Sup  · The Drowning  · The Room Pocket  · 三国之杀场  · 王者之剑  · Rochard  · Momonga弹珠冒险记  · Tap Sonic Star  · 死亡*** (DEAD TRIGGER)  · 公路战士(Road Warrior)  · 极速飞盘 Frisbee Forever  · 口袋RPG (Pocket RPG)  · 机器人大战 (Roboto)  · 绝命武装(Bravo Force:Last Stand)  · 阿尔龙:剑影 ( Aralon:Sword and Shad)  · 街头摔跤 ( Street Wrestler )  · 缪斯(M.U.S.E.)  · 疯狂的公牛(Bull Dozer)  · year walk  · Jack Lumber  · 神庙逃亡:魔境仙踪(Temple Run Oz  · 血之荣耀:传奇 ( Blood & Glory 2 : Le)  · 绳索救援 ( Rope Rescue )  · 子弹时间(Bullet Time)  · 松饼骑士(Muffin Knight)  · 狂奔弗雷德 (Running Fred)  · 荒谬剧场 (Theatre of the Absurd)
虚拟99()温馨提示转载请注明出及本文链接!
&&免责声明:本站转载文章仅代表作者个人观点,与虚拟99立场无关。其原创性以及文中陈述文字和内容未经本站证实,对本文以及全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
VR交流1群:&&VR交流2群:
肤白貌美的性感泡菜国美女室内上演激情撩汉表演,迷离的眼神,性感的身躯,还有让人不
天海翼学生装开脱 无数男人被她征服
VR视频类别:美女时尚
评分:5.0(满分5颗星)
下载地址:
**** 本内容被作者隐藏 ****
冲田杏梨网络爆红K罩杯被赞“人类最强body”要是你还不知道这个女人的名字话,你Out了
扫描微信二维码或搜索
虚拟99微信公众号:ixuni99
杜绝IDC、短信、代理等广告
&&本站内容来自互联网与用户分享,如有侵权请联系我们删除!技术支持:上海萌点信息科技有限公司&&(Unity API - C-爱编程
Unity API - C
废话不多说,一针见血,go!
一起来看 API
Caching 缓存
Caching.Authorize 授权
授权这个Unity内容使用缓存
Caching.CleanCache 清除缓存
删除这个内容相关的缓存文件夹
当你已经有一个缓存许可证时,这个函数才能激活
Caching.Authorize (name, domain, size, signature)
if (GUILayout.Button("Uninstall Game"))
Caching.CleanCache ()
Caching.enabled 启用
缓存是否启用?
if (!Caching.enabled)
GUILayout.Label ("Please turn on caching to run this game.")
Caching.expirationDelay 截止延迟(啥?)
Caching 缓存
Caching类让你管理资源包缓存,下载使用
Caching.IsVersionCached 是否缓存的版本
检查,如果一个资源包被缓存
if (Caching.IsVersionCached("/bla.unity3d", 3))
GUILayout.Button("Load Level")
Caching.ready 准备
Caching.spaceFree 剩余空间
可用的磁盘空间,以bytes(字节)为单位
Caching.spaceOccupied 占用空间
已经使用的磁盘空间,以bytes(字节)为单位
Camera 摄像机
Camera.actualRenderingPath 实际渲染路径
实际使用的渲染路径
Camera.allCameras 所有相机
返回场景中所有启用的相机
using UnityE
using System.C
public class example : MonoBehaviour {
public int count = Camera.allCameras.L
public void Awake()
print("We've got " + count + " cameras");
Camera.aspect 宽长比
宽长比(宽度除以高度)
using UnityE
using System.C
public class example : MonoBehaviour {
public void Awake()
if (camera.aspect & 1.0F)
print("Screen is more wide than tall!");
print("Screen is more tall than wide!");
Camera.backgroundColor 背景颜色
屏幕将被清理为这个颜色
来回变化背景颜色
using UnityE
using System.C
public class example : MonoBehaviour {
public Color color1 = Color.
public Color color2 = Color.
public float duration = 3.0F;
void Update()
float t = Mathf.PingPong(Time.time, duration) /
camera.backgroundColor = Color.Lerp(color1, color2, t);
public void Awake()
camera.clearFlags = CameraClearFlags.SolidC
Camera.cameraToWorldMatrix 相机转世界矩阵
从相机空间到世界空间的变换矩阵
在屏幕视图绘制一个***的球,以Distance单位,沿着相机所看方向
using UnityE
using System.C
public class example : MonoBehaviour {
public float distance = -1.0F;
void OnDrawGizmosSelected()
Matrix4x4 m = camera.cameraToWorldM
Vector3 p = m.MultiplyPoint(new Vector3(0, 0, distance));
Gizmos.color = Color.
Gizmos.DrawSphere(p, 0.2F);
Camera.clearFlags 清除标识
相机如何清除背景
using UnityE
using System.C
public class example : MonoBehaviour {
public void Awake()
camera.clearFlags = CameraClearFlags.SolidC
Camera.CopyFrom 复制到
使这个相机的设置与其他相机相同
Camera.cullingMask 消隐遮罩
这个用来选择性的渲染部分场景
using UnityE
using System.C
public class example : MonoBehaviour {
public void Awake()
camera.cullingMask = 1 && 0;
Camera.current 当前相机
当前用于渲染的相机,只用于低级的渲染控制
Camera.depth 深度
相机在渲染顺序上的深度
using UnityE
using System.C
public class example : MonoBehaviour {
public void Awake()
camera.depth = Camera.main.depth + 1;
Camera.depthTextureMode 深度纹理模式
相机生成怎样的一个深度纹理
using UnityE
using System.C
public class example : MonoBehaviour {
public void Awake()
camera.depthTextureMode = DepthTextureMode.DepthN
Camera.farClipPlane 远裁剪平面
远裁剪面的距离(啥玩意)
using UnityE
using System.C
public class example : MonoBehaviour {
public void Awake()
camera.farClipPlane = 100.0F;
Camera.fieldOfView 固定视野
相机的视野,以度为单位
using UnityE
using System.C
public class example : MonoBehaviour {
public void Awake()
camera.fieldOfView = 60;
使用专门主相机
using UnityE
using System.C
public class example : MonoBehaviour {
public void Awake()
Camera.main.fieldOfView = 80;
Camera 摄像机
Camera是一个设备,玩家通过它看世界
Camera.layerCullDistances 层消隐距离
每层的消隐距离(不懂)
using UnityE
using System.C
public class example : MonoBehaviour {
void Start()
float[] distances = new float[32];
distances[10] = 15;
camera.layerCullDistances =
Camera.main 主相机
第一个启用的被标记为“MainCanmera”的相机
Camera.nearClipPlane 近裁剪平面
近裁剪面的距离
using UnityE
using System.C
public class example : MonoBehaviour {
public void Awake()
camera.nearClipPlane = 0.1F;
Camera.OnPostRender 在渲染之后
OnPostRender 在相机渲染场景之后调用
这个脚本让你在每个相机开启/禁用雾效
在检视面板开启或禁用这个脚本
在每个相机可以开启/禁用雾效
using UnityE
using System.C
public class example : MonoBehaviour {
private bool revertFogState = false;
void OnPreRender()
revertFogState = RenderSettings.
RenderSettings.fog =
void OnPostRender()
RenderSettings.fog = revertFogS
Camera.OnPreCull 在消隐之前
OnPreCull在相机开始裁剪场景之前调用
附加这个到相机
反转相机中的物体,因此每个被渲染的物体是反的(?)
using UnityE
using System.C
public class example : MonoBehaviour {
void OnPreCull()
camera.ResetWorldToCameraMatrix();
camera.ResetProjectionMatrix();
camera.projectionMatrix = camera.projectionMatrix * Matrix4x4.Scale(new Vector3(1, -1, 1));
void OnPreRender()
GL.SetRevertBackfacing(true);
void OnPostRender()
GL.SetRevertBackfacing(false);
Camera.OnPreRender 在渲染之前
OnPreRender在相机开始渲染场景之前调用
这个脚本让你在每个相机开启/禁用雾效
在检视面板开启或禁用这个脚本
在每个相机可以开启/禁用雾效
using UnityE
using System.C
public class example : MonoBehaviour {
private bool revertFogState = false;
void OnPreRender()
revertFogState = RenderSettings.
RenderSettings.fog =
void OnPostRender()
RenderSettings.fog = revertFogS
Camera.OnRenderImage 在渲染图像之后
OnRenderImage在所有渲染完成后被调用,来渲染图片的后期处理效果
Camera.OnRenderObject 在渲染物体之后
OnRenderObject 被用来渲染你自己的物体,使用或者其他函数
Camera.OnWillRenderObject 在渲染物体之前
如果物体可见,每个相机都会调用OnWillRenderObject
增加otherObject的大小同时这个变换正在渲染
注意这个将被调用即使场景编辑器显示这个物体
因此,请确保在游戏视图看不到的物体,不在场景编辑器
using UnityE
using System.C
public class example : MonoBehaviour {
public GameObject otherO
void OnWillRenderObject()
otherObject.transform.localScale *= 1.0001F;
Camera.orthographic 正交
相机是正交的(true),是透视的(false)?
using UnityE
using System.C
public class example : MonoBehaviour {
public void Awake()
camera.orthographic = true;
用于专门的主相机
using UnityE
using System.C
public class example : MonoBehaviour {
public void Awake()
Camera.main.orthographic = true;
Camera.orthographicSize 正交大小
在正交模式下相机的一半尺寸
using UnityE
using System.C
public class example : MonoBehaviour {
public void Awake()
camera.orthographic = true;
camera.orthographicSize = 5;
使用专门的主相机
using UnityE
using System.C
public class example : MonoBehaviour {
public void Awake()
Camera.main.orthographic = true;
Camera.main.orthographicSize = 5;
Camera.pixelHeight 相机高度
相机有多高,以像素单位
using UnityE
using System.C
public class example : MonoBehaviour {
public void Awake()
print("Camera is " + camera.pixelWidth + " pixels wide");
Camera.pixelRect 像素矩形
相机被渲染到屏幕像素中的位置
using UnityE
using System.C
public class example : MonoBehaviour {
void Update()
Rect r = camera.pixelR
print("Camera displays from " + r.xMin + " to " + r.xMax + " pixel");
Camera.pixelWidth 相机宽度
相机有多宽,以像素单位
using UnityE
using System.C
public class example : MonoBehaviour {
public void Awake()
print("Camera is " + camera.pixelWidth + " pixels wide");
Camera.projectionMatrix 投影矩阵
设置自定义的投影矩阵
让相机以流行的方式晃动
using UnityE
using System.C
public class example : MonoBehaviour {
public Matrix4x4 originalP
void Update()
Matrix4x4 p = originalP
p.m01 += Mathf.Sin(Time.time * 1.2F) * 0.1F;
p.m10 += Mathf.Sin(Time.time * 1.5F) * 0.1F;
camera.projectionMatrix =
public void Awake()
originalProjection = camera.projectionM
设置一个偏移中心的投影,这个透视的消失点没有必要在屏幕的中心
定义近载面大小,例如相机的近裁面偏移中心多少
改变这个值你就能看到相机视图的变化
using UnityE
using System.C
public class example : MonoBehaviour {
public float left = -0.2F;
public float right = 0.2F;
public float top = 0.2F;
public float bottom = -0.2F;
void LateUpdate()
Camera cam =
Matrix4x4 m = PerspectiveOffCenter(left, right, bottom, top, cam.nearClipPlane, cam.farClipPlane);
cam.projectionMatrix =
static Matrix4x4 PerspectiveOffCenter(float left, float right, float bottom, float top, float near, float far) {
float x = 2.0F * near / right -
float y = 2.0F * near / top -
float a = right + left / right -
float b = top + bottom / top -
float c = -far + near / far -
float d = -2.0F * far * near / far -
float e = -1.0F;
m[0, 1] = 0;
m[0, 3] = 0;
m[1, 0] = 0;
m[1, 3] = 0;
m[2, 0] = 0;
m[2, 1] = 0;
m[3, 0] = 0;
m[3, 1] = 0;
m[3, 3] = 0;
Camera.rect 矩形
相继被渲染到屏幕规范化坐标中的位置
Rect的范围总0(左/下)到1(右/上)
function Update ()
if (Input.GetButtonDown ("Jump"))
var margin = Random.Range (0.0, 0.3);
camera.rect = Rect (margin, 0, 1 - margin * 2, 1);
Camera.Render 渲染
手动渲染相机
Camera.renderingPath 渲染路径
Camera.RenderToCubemap 渲染到立方图
从这个相机渲染到一个立方贴图(不懂)
class RenderCubemapWizard extends ScriptableWizard
var renderFromPosition : T
var cubemap : C
function OnWizardUpdate ()
helpString = "Select transform to render from and cubemap to render into";
isValid = (renderFromPosition != null) && (cubemap != null);
function OnWizardCreate ()
var go = new GameObject( "CubemapCamera", Camera );
go.transform.position = renderFromPosition.
go.transform.rotation = Quaternion.
go.camera.RenderToCubemap( cubemap );
DestroyImmediate( go );
@MenuItem("GameObject/Render into Cubemap")
static function RenderCubemap ()
ScriptableWizard.DisplayWizard.&RenderCubemapWizard&(
"Render cubemap", "Render!");
@script ExecuteInEditMode
var cubemapSize = 128;
var oneFacePerFrame = false;
private var cam : C
private var rtex : RenderT
function Start ()
UpdateCubemap( 63 );
function LateUpdate ()
if (oneFacePerFrame)
var faceToRender = Time.frameCount % 6;
var faceMask = 1 && faceToR
UpdateCubemap (faceMask);
UpdateCubemap (63);
function UpdateCubemap (faceMask : int)
var go = new GameObject ("CubemapCamera", Camera);
go.hideFlags = HideFlags.HideAndDontS
go.transform.position = transform.
go.transform.rotation = Quaternion.
cam.farClipPlane = 100;
cam.enabled = false;
if (!rtex)
rtex = new RenderTexture (cubemapSize, cubemapSize, 16);
rtex.isPowerOfTwo = true;
rtex.isCubemap = true;
rtex.hideFlags = HideFlags.HideAndDontS
renderer.sharedMaterial.SetTexture ("_Cube", rtex);
cam.transform.position = transform.
cam.RenderToCubemap (rtex, faceMask);
function OnDisable ()
DestroyImmediate (cam);
DestroyImmediate (rtex);
Camera.RenderWithShader 用Shader渲染
用shader替代渲染相机
Camera.ResetAspect 重设长宽比
恢复长宽比为屏幕的长宽比
using UnityE
using System.C
public class example : MonoBehaviour {
public void Awake()
camera.ResetAspect();
Camera.ResetProjectionMatrix 重设投影矩阵
让投影反映正常的相机参数(?)
using UnityE
using System.C
public class example : MonoBehaviour {
public void Awake()
camera.ResetProjectionMatrix();
Camera.ResetReplacementShader 重设替换Shader
从相机上移除shader替换(what?)
Camera.ResetWorldToCameraMatrix 重设世界转相机矩阵
在场景中让渲染位置反映相机的位置
using UnityE
using System.C
public class example : MonoBehaviour {
public void Awake()
camera.ResetWorldToCameraMatrix();
Camera.ScreenPointToRay 屏幕位置转射线
返回一条射线从摄像机通过一个屏幕点
打印相机直接看到物体名称
using UnityE
using System.C
public class example : MonoBehaviour {
void Update()
Ray ray = camera.ViewportPointToRay(new Vector3(0.5F, 0.5F, 0));
if (Physics.Raycast(ray, ref hit))
print("I'm looking at " + hit.transform.name);
print("I'm looking at nothing!");
Camera.ScreenToViewportPoint 屏幕转视窗位置
从屏幕空间到视窗空间的变换位置
Camera.ScreenToWorldPoint 屏幕转世界位置
从屏幕空间到世界空间的变化位置
在所选相机的近裁剪面上,绘制一个***的球,在左下100像素的位置
using UnityE
using System.C
public class example : MonoBehaviour {
void OnDrawGizmosSelected()
Vector3 p = camera.ScreenToWorldPoint(new Vector3(100, 100, camera.nearClipPlane));
Gizmos.color = Color.
Gizmos.DrawSphere(p, 0.1F);
Camera.SetReplacementShader 设置替换Shader
使相机渲染用shader替换
Camera.targetTexture 目标纹理
渲染纹理的目标
Camera.velocity 速度
获取世界空间中相机的速度
using UnityE
using System.C
public class example : MonoBehaviour {
void Update()
print("Camera moving at " + camera.velocity.magnitude + " m/s");
Camera.ViewportPointToRay 视窗位置转射线
返回从相机出发穿过视点的一个射线
打印相机直接看到物体名称
using UnityE
using System.C
public class example : MonoBehaviour {
void Update()
Ray ray = camera.ViewportPointToRay(new Vector3(0.5F, 0.5F, 0));
if (Physics.Raycast(ray, ref hit))
print("I'm looking at " + hit.transform.name);
print("I'm looking at nothing!");
Camera.ViewportToScreenPoint 视窗转屏幕位置
从视口空间到屏幕空间的变换位置
Camera.ViewportToWorldPoint 视窗转世界位置
从视窗空间到世界空间的变换位置
在近裁剪面的右上角绘制一个***的球,针对在场景视图中选中的相机
using UnityE
using System.C
public class example : MonoBehaviour {
void OnDrawGizmosSelected()
Vector3 p = camera.ViewportToWorldPoint(new Vector3(1, 1, camera.nearClipPlane));
Gizmos.color = Color.
Gizmos.DrawSphere(p, 0.1F);
Camera.worldToCameraMatrix 世界转相机矩阵
从世界到相机空间的变换矩阵
从Offsets位置偏移相机的渲染
using UnityE
using System.C
public class example : MonoBehaviour {
public Vector3 offset = new Vector3(0, 1, 0);
void LateUpdate()
Vector3 camoffset = new Vector3(-offset.x, -offset.y, offset.z);
Matrix4x4 m = Matrix4x4.TRS(camoffset, Quaternion.identity, new Vector3(1, 1, -1));
camera.worldToCameraMatrix = m * transform.worldToLocalM
Camera.WorldToScreenPoint 世界转屏幕位置
从世界空间到屏幕空间变换位置
using UnityE
using System.C
public class example : MonoBehaviour {
void Update()
Vector3 screenPos = camera.WorldToScreenPoint(target.position);
print("target is " + screenPos.x + " pixels from the left");
Camera.WorldToViewportPoint 世界转视窗位置
从世界空间到视窗空间的变换位置
Target在屏幕的左边还是右边
using UnityE
using System.C
public class example : MonoBehaviour {
void Update()
Vector3 viewPos = camera.WorldToViewportPoint(target.position);
if (viewPos.x & 0.5F)
print("target is on the right side!");
print("target is on the left side!");
CapsuleCollider 胶囊碰撞器
CapsuleCollider.center 中心
胶囊的中心,基于物体的自身坐标空间
using UnityE
using System.C
public class example : MonoBehaviour {
public void Awake()
collider.center = Vector3.
CapsuleCollider.direction 方向
胶囊的方向
using UnityE
using System.C
public class example : MonoBehaviour {
public void Awake()
collider.direction = 0;
CapsuleCollider.height 高度
胶囊的高度,基于物体的自身空间
using UnityE
using System.C
public class example : MonoBehaviour {
public void Awake()
collider.height = 5;
CapsuleCollider 胶囊碰撞器
一个胶囊形状的基本碰撞器
CapsuleCollider.radius 半径
球体的半径,基于物体的自身坐标
using UnityE
using System.C
public class example : MonoBehaviour {
public void Awake()
collider.radius = 1;
CharacterController 角色控制器
CharacterController.center 中心
相对于变换位置的角色胶囊体的中心
将胶囊体的中心向上移动
using UnityE
using System.C
public class example : MonoBehaviour {
public CharacterC
public void Awake()
controller = GetComponent&CharacterController&();
controller.center = new Vector3(0, 1, 0);
CharacterController.collisionFlags 碰撞标识
在最后的CharacterController.Move调用期间,胶囊体的哪个部分与周围环境相碰撞
function Update ()
var controller : CharacterController = GetComponent(CharacterController);
if ((controller.collisionFlags & CollisionFlags.Above) != 0)
print("touched the ceiling");
CharacterController.detectCollisions 检测碰撞
其他的刚体和角色控制器是否能够与本角色控制器相碰撞(默认值始终启用)
using UnityE
using System.C
public class example : MonoBehaviour {
public CharacterC
public void Awake()
c = GetComponent&CharacterController&();
c.detectCollisions = false;
CharacterController.height 高度
角色胶囊体的高度
设置控制器的高度为2.0
using UnityE
using System.C
public class example : MonoBehaviour {
public CharacterC
public void Awake()
controller = GetComponent();
controller.height = 2.0F;
CharacterController 角色控制器
用CharacterController组件,它包含Rigidbody组件的一些属性,就不用用Rigidbody组件了
character一般用于主角这类用户控制的物体,它不会受到scene的重力影响,不会被其他物体推。
程序中可以使用它的move方法移动它,当他碰到静态物体时,会停下来,遇到动态物体时会推开他,当然,这些都是可以通过activegroup来控制的。group最多有32组。因为他是一个NxU32,并通过每一位代表一个组。
move的一个参数用来告诉程序,character的当前状态。(collisionFlags)
当他遇到物体的时候,如果设置了回调函数,系统会通过回调函数通知程序。。(NxControllerDesc.callback)
character还有上楼梯模式,在某些高度的台阶,可以直接上去。(NxControllerDesc.stepOffset)
character还可以设置可以走上去的斜坡。(NxControllerDesc.slopeLimit)
由于character不受场景的重力影响,所以,用户要在move函数中自己添加重力因素,也就是说,character可以浮在空中,除非那里有其他activegroup物体。
CharacterController.isGrounded 是否地面
在最后的移动角色控制器是否触碰地面?
using UnityE
using System.C
public class example : MonoBehaviour {
void Update()
CharacterController controller = GetComponent&CharacterController&();
if (controller.isGrounded)
print("We are grounded");
CharacterController.Move 移动
一个更加复杂的运动函数,每次都绝对运动
这个脚本用箭头键向前移动和侧移角色控制器。
当按下空格键时,它跳起
确保把一个character controller组件附加到同一个游戏物体上
建议你每帧只调用一次Move或者SimpleMove
using UnityE
using System.C
public class example : MonoBehaviour {
public float speed = 6.0F;
public float jumpSpeed = 8.0F;
public float gravity = 20.0F;
private Vector3 moveDirection = Vector3.
void Update()
CharacterController controller = GetComponent&CharacterController&();
if (controller.isGrounded)
moveDirection = new Vector3(Input.GetAxis("Horizontal"), 0, Input.GetAxis("Vertical"));
moveDirection = transform.TransformDirection(moveDirection);
moveDirection *=
if (Input.GetButton("Jump"))
moveDirection.y = jumpS
moveDirection.y -= gravity * Time.deltaT
controller.Move(moveDirection * Time.deltaTime);
CharacterController.OnControllerColliderHit 控制碰撞器碰撞
当控制器碰撞一个正在运动的碰撞器时,OnControllerColliderHit 被调用
这个脚本推动所有的角色碰撞到的刚体
using UnityE
using System.C
public class example : MonoBehaviour {
public float pushPower = 2.0F;
void OnControllerColliderHit(ControllerColliderHit hit) {
Rigidbody body = hit.collider.attachedR
if (body == null || body.isKinematic)
if (hit.moveDirection.y & -0.3F)
Vector3 pushDir = new Vector3(hit.moveDirection.x, 0, hit.moveDirection.z);
body.velocity = pushDir * pushP
CharacterController.radius 半径
角色胶囊体的半径
设置控制器的半径为0.3
using UnityE
using System.C
public class example : MonoBehaviour {
public CharacterC
public void Awake()
controller = GetComponent&CharacterController&();
controller.radius = 0.3F;
CharacterController.SimpleMove 简单移动
以一定的速度移动角色
using UnityE
using System.C
public class example : MonoBehaviour {
public float speed = 3.0F;
public float rotateSpeed = 3.0F;
void Update()
CharacterController controller = GetComponent&CharacterController&();
transform.Rotate(0, Input.GetAxis("Horizontal") * rotateSpeed, 0);
Vector3 forward = transform.TransformDirection(Vector3.forward);
float curSpeed = speed * Input.GetAxis("Vertical");
controller.SimpleMove(forward * curSpeed);
CharacterController.slopeLimit 坡度限制
角色控制器的坡度度数限制
设置控制器的坡度限制为45.0度
using UnityE
using System.C
public class example : MonoBehaviour {
public CharacterC
public void Awake()
controller = GetComponent&CharacterController&();
controller.slopeLimit = 45.0F;
CharacterController.stepOffset 台阶偏移量
以米为单位的角色控制器的台阶偏移量
台阶高度,步高
设置控制器的台阶高度
using UnityE
using System.C
public class example : MonoBehaviour {
public CharacterC
public void Awake()
controller = GetComponent();
controller.stepOffset = 2.0F;
CharacterController.velocity 速度
角色当前的相对速度
using UnityE
using System.C
public class example : MonoBehaviour {
void Update() {
CharacterController controller = GetComponent&CharacterController&();
Vector3 horizontalVelocity = controller.
horizontalVelocity = new Vector3(controller.velocity.x, 0, controller.velocity.z);
float horizontalSpeed = horizontalVelocity.
float verticalSpeed = controller.velocity.y;
float overallSpeed = controller.velocity.
CharacterJoint 角色关节
CharacterJoint.highTwistLimit 旋转上限
角色关节围绕原始轴的上限
CharacterJoint 角色关节
角色关节主要用于布娃娃效果 它们是一个扩展的球窝状关节,允许你在每个轴上限制关节
CharacterJoint.lowTwistLimit 旋转下限
角色关节围绕原始轴的下限
CharacterJoint.swing1Limit 旋转限制1
角色关节围绕原始轴的限制
CharacterJoint.swing2Limit 旋转限制2
CharacterJoint.swingAxis 旋转轴
关节可以围绕旋转的副轴
Cloth 布料
Cloth.bendingStiffness 抗弯硬度
布料的抗弯硬度(坚挺的程度)
设置布料的bending Stiffness为1
可以是Skinned Cloth或者Interactive Cloth
using UnityE
using System.C
public class example : MonoBehaviour {
public void Awake()
transform.GetComponent&Cloth&().bendingStiffness = 1;
Cloth.damping 阻尼
布料运动时的阻尼
设置布料的damping为1
可以是Skinned Cloth或者Interactive
using UnityE
using System.C
public class example : MonoBehaviour {
public void Awake()
transform.GetComponent&Cloth&().damping = 1;
Cloth.enabled 启用?
是否启用这个布料?
using UnityE
using System.C
public class example : MonoBehaviour {
public void Awake()
GetComponent&InteractiveCloth&().enabled = false;
Cloth.externalAcceleration 外力
施加于布料的外力,一个恒量
using UnityE
using System.C
public class example : MonoBehaviour {
public void Awake()
transform.GetComponent&Cloth&().externalAcceleration = -Physics.gravity / 2;
Cloth 布料
用来模拟物理布料的基类,通过InteractiveCloth和SkinnedCloth共享
Cloth.normals 法线列表
当前布料物体的法线列表
Cloth.randomAcceleration 随机外力
施加于布料的外力,一个随机变量
using UnityE
using System.C
public class example : MonoBehaviour {
public void Awake()
transform.GetComponent&Cloth&().randomAcceleration = new Vector3(10, 0, 0);
Cloth.selfCollision 自身碰撞
是否产生自身碰撞
using UnityE
using System.C
public class example : MonoBehaviour {
public void Awake()
GetComponent&InteractiveCloth&().selfCollision = false;
Cloth.stretchingStiffness 韧度
布料的韧性(可拉伸的程度)
设置布料的stretching Stiffness为1
可以是Skinned Cloth或者Interactive
using UnityE
using System.C
public class example : MonoBehaviour {
public void Awake()
transform.GetComponent&Cloth&().stretchingStiffness = 1;
Cloth.thickness 厚度
布料表面的厚度
using UnityE
using System.C
public class example : MonoBehaviour {
public void Awake()
transform.GetComponent&Cloth&().thickness = 0.2F;
Cloth.useGravity 使用重力
是否重力影响布料模拟?
using UnityE
using System.C
public class example : MonoBehaviour {
public void Awake()
transform.GetComponent&Cloth&().useGravity = false;
Cloth.vertices 顶点列表
当前布料物体的顶点位置列表
ClothRenderer 布料渲染器
ClothRenderer 布料渲染器
ClothRenderer组件和InteractiveCloth 组件配合使用,在场景中使一个布料物体可见
ClothRenderer.pauseWhenNotVisible 不可见时暂停
在ClothRenderer不可见的时,暂停布料模拟
如果这个属性开启,布料只会在任意相机中可见时模拟。这样可改善物理模拟的性能
pauseWhenNotVisible = true;
ClothSkinningCoefficient 布料蒙皮系数
ClothSkinningCoefficient.collisionSphereDistance 碰撞球体距离
定义一个球体的一个顶点不允许进入 这允许反向碰撞动画布料(什么意思)
ClothSkinningCoefficient.collisionSphereRadius 碰撞球体半径
定义一个球体的一个顶点不允许进入 这允许反向碰撞动画布料
ClothSkinningCoefficient 布料蒙皮系数
ClothSkinningCoefficient结构用于设置SkinnedCloth组件允许如何移动,有关SkinnedMeshRenderer是附加的(不懂)
ClothSkinningCoefficient.maxDistance 最大距离
一个点是允许从蒙皮网格点位置运动的距离
ClothSkinningCoefficient.maxDistanceBias 最大距离偏移
通过基于蒙皮网格法线的最大距离,变形定义的球体(what)
Collider 碰撞器
Collider.attachedRigidbody 附加刚体
碰撞器附加的刚体
using UnityE
using System.C
public class example : MonoBehaviour {
public void Awake()
collider.attachedRigidbody.AddForce(0, 100, 0);
Collider.bounds 包围盒
碰撞器在世界坐标空间的包围盒
Collider.ClosestPointOnBounds 到包围盒最近点
到附加碰撞器的包围盒最近的点
当应用于爆炸伤害,这能用于计算伤害点数
var hitPoints : float = 100.0;
function ApplyHitPoints (explosionPos : Vector3, radius : float) {
var closestPoint : Vector3 = collider.ClosestPointOnBounds(explosionPos);
var distance : float = Vector3.Distance(closestPoint, explosionPos);
var hitPoints : float = 1.0 - Mathf.Clamp01(distance / radius);
hitPoints *= 10;
Collider 碰撞器
所有碰撞器的基类(鸡肋)
Collider.isTrigger 是触发器?
碰撞器是一个触发器?
using UnityE
using System.C
public class example : MonoBehaviour {
public void Awake()
collider.isTrigger = true;
Collider.material 材质
碰撞器使用的材质
如果材质被碰撞器共享,它将复制材质并指定给碰撞器
using UnityE
using System.C
public class example : MonoBehaviour {
public void Awake()
collider.material.dynamicFriction = 0;
collider.material.staticFriction = 0;
Collider.OnCollisionEnter 进入碰撞
当collider/rigidbody开始触动另一个rigidbody/collider时OnCollisionEnter被调用
如果碰撞器附加一个非动力学刚体,也仅发送碰撞事件
using UnityE
using System.C
public class example : MonoBehaviour {
void OnCollisionEnter(Collision collision)
foreach (ContactPoint contact in collision.contacts)
Debug.DrawRay(contact.point, contact.normal, Color.white);
if (collision.relativeVelocity.magnitude & 2)
audio.Play();
一个手榴弹
一个手榴弹
- instantiates a explosion prefab when hitting a surface
当撞击表面时实例化一个爆炸预设
- then destroys itself
然后销毁它们
using UnityE
using System.C
public class example : MonoBehaviour {
public Transform explosionP
void OnCollisionEnter(Collision collision)
ContactPoint contact = collision.contacts[0];
Quaternion rot = Quaternion.FromToRotation(Vector3.up, contact.normal);
Vector3 pos = contact.
Instantiate(explosionPrefab, pos, rot);
Destroy(gameObject);
Collider.OnCollisionExit 退出碰撞
当 collider/rigidbody停止触动另一个 rigidbody/collider时,OnCollisionExit被调用
如果碰撞器附加一个非动力学刚体,也仅发送碰撞事件
using UnityE
using System.C
public class example : MonoBehaviour {
void OnCollisionExit(Collision collisionInfo)
print("No longer in contact with " + collisionInfo.transform.name);
Collider.OnCollisionStay 逗留碰撞
一个碰撞器或刚体触动另一个刚体或碰撞器,在每帧都会调用OnCollisionStay,直到它们之间离开,不接触
如果碰撞器附加一个非动力学刚体,也仅发送碰撞事件
using UnityE
using System.C
public class example : MonoBehaviour {
void OnCollisionStay(Collision collisionInfo)
foreach (ContactPoint contact in collisionInfo.contacts)
Debug.DrawRay(contact.point, contact.normal * 10, Color.white);
Collider.OnTriggerEnter 进入触发器
当碰撞器other进入触发器时OnTriggerEnter被调用
假如一个碰撞物体同时带有一个刚体属性
那么只发送这个触发事件
using UnityE
using System.C
public class example : MonoBehaviour {
void OnTriggerEnter(Collider other)
Destroy(other.gameObject);
Collider.OnTriggerExit 退出触发器
当碰撞器离开触发器时,调用OnTriggerExit
假如一个碰撞物体同时带有一个刚体属性
那么只发送这个触发事件
using UnityE
using System.C
public class example : MonoBehaviour {
void OnTriggerExit(Collider other)
Destroy(other.gameObject);
Collider.OnTriggerStay 逗留触发器
每个碰撞器从进入触发器那一刻到退出触发器之前,几乎每帧都会调用OnTriggerStay
假如一个碰撞物体同时带有一个刚体属性
那么只发送这个触发事件
OnTriggerStay是在每一个Time.fixedDeltaTime的时间节点上运行,不是Time.deltaTime的时间节点上运行
using UnityE
using System.C
public class example : MonoBehaviour {
void OnTriggerStay(Collider other)
if (other.attachedRigidbody)
other.attachedRigidbody.AddForce(Vector3.up * 10);
Collider.Raycast 光线投射
投射一个光线(Ray),它忽略所有碰撞器,除了这个
function Update()
var ray : Ray = Camera.main.ScreenPointToRay (Input.mousePosition);
var hit : RaycastH
if (collider.Raycast (ray, hit, 100.0))
Debug.DrawLine (ray.origin, hit.point);
Collider.sharedMaterial 共享材质
碰撞器的共享物理材质
using UnityE
using System.C
public class example : MonoBehaviour {
public PhysicM
public void Awake()
collider.sharedMaterial =
Collision 碰撞
Collision.collider 碰撞器
我们碰撞的碰撞器
Collision.contacts 接触点列表
接触点由物理引擎产生
using UnityE
using System.C
public class example : MonoBehaviour {
void OnCollisionStay(Collision collision)
foreach (ContactPoint contact in collision.contacts)
print(contact.thisCollider.name + " hit " + contact.otherCollider.name);
Debug.DrawRay(contact.point, contact.normal, Color.white);
Collision.gameObject 游戏物体
gameObject是我们碰撞的物体
Collision 碰撞
Collision.relativeVelocity 相对速度
两个碰撞物体的相对线性速度
using UnityE
using System.C
public class example : MonoBehaviour {
void OnCollisionEnter(Collision collision)
if (collision.relativeVelocity.magnitude & 2)
audio.Play();
Collision.rigidbody 刚体
我们碰撞的刚体 如果我们碰撞的物体是一个没有附加刚体的碰撞器,返回null
Make all rigidbodies we touch fly upwards
使我们接触的全部刚体向上飞
using UnityE
using System.C
public class example : MonoBehaviour {
void OnCollisionStay(Collision collision)
if (collision.rigidbody)
collision.rigidbody.AddForce(Vector3.up * 15);
Collision.transform 变换
我们碰撞的物体的Transform
Color 颜色
Color.a 透明
颜色中的Alpha组件
using UnityE
using System.C
public class example : MonoBehaviour {
public Color color = Color.
public void Awake()
color.a = 0;
Color.b 蓝色
三基色之一的蓝色通道
Color.g 绿色
三基色之一的绿色通道
Color.r 红色
三基色之一的红色通道
Color.black 黑色
纯黑色 RGBA 是 (0, 0, 0, 1)
using UnityE
using System.C
public class example : MonoBehaviour {
public void Awake()
transform.renderer.material.color = Color.
Color.blue 蓝色
纯蓝色 RGBA 是(0, 0, 1, 1)
Color.clear 清空
完全透明 RGBA 是 (0, 0, 0, 0)
Color.Color 颜色
用给定的r,g,b,a组件构造一个新的颜色
using UnityE
using System.C
public class example : MonoBehaviour {
public Color color = new Color(0.2F, 0.3F, 0.4F, 0.5F);
Color.cyan 青色
青色 RGBA 是 (0, 1, 1, 1)
Color.gray 灰色 || Color.grey 灰色
灰色 RGBA 是 (0.5, 0.5, 0.5, 1)
Color.grayscale 灰度
颜色的灰度值
using UnityE
using System.C
public class example : MonoBehaviour {
public Color color = new Color(0.3F, 0.4F, 0.6F);
public void Awake()
print(color.grayscale);
Color.green 绿色
纯绿色 RGBA 是 (0, 1, 0, 1)
Color.magenta 紫红色
紫红色 RGBA 是 (1, 0, 1, 1)
Color.red 红色
纯红色 RGBA 是 (1, 0, 0, 1)
Color.white 白色
纯白色 RGBA 是 (1, 1, 1, 1)
Color.yellow ***
***。 RGBA 是怪异的 (1, 235/255, 4/255, 1) , 但是颜色看起来漂亮!
Color.this [int index] 访问索引
分别用[0],[1],[2],[3]访问r,g,b,a组件
using UnityE
using System.C
public class example : MonoBehaviour {
public void Awake()
Color.Lerp 插值
通过t在颜色a和b之间插值
Converts a white color to a black one trough time.
在一个时间段内将白色逐渐转换成黑色
using UnityE
using System.C
public class example : MonoBehaviour {
public Color lerpedColor = Color.
void Update()
erpedColor = Color.Lerp(Color.white, Color.black, Time.time);
Color.operator + 运算符 加法
两个颜色相加,每个组件被分别相加
using UnityE
using System.C
public class example : MonoBehaviour {
public Color result = Color.blue + Color.
以下东西有个屁用
Color.operator Color 运算符 颜色 miss
Color.operator /运算符 除法 miss
Color.operator * 运算符 乘法 miss
Color.operator - 运算符 减法 miss
Color.operator Vector4 运算符 四维向量 miss
Color.ToString 转为字符串 miss
CombineInstance 合并实例
CombineInstance 合并实例
用来描绘网格合并的结构,使用bineMeshes
CombineInstance.mesh 网格
CombineInstance.subMeshIndex 子网格索引
网格的子网格索引
CombineInstance.transform 变换
合并之前,网格变换的矩阵
版权所有 爱编程 (C) Copyright 2012. . All Rights Reserved.
闽ICP备号-3
微信扫一扫关注爱编程,每天为您推送一篇经典技术文章。

参考资料

 

随机推荐