U1L13-2——物理系统之碰撞器
U1L13-2——物理系统之碰撞器 碰撞器(Collider) 碰撞体组件可定义用于物理碰撞的游戏对象的形状。碰撞体是不可见的,其形状不需要与游戏对象的网格完全相同。网格的粗略近似方法通常更有效,在游戏运行过程中难以察觉。 最简单(并且也是处理器开销最低)的碰撞体是__原始__碰撞体类型。在 3D 中,这些碰撞体为盒型碰撞体、球形碰撞体和胶囊碰撞体。在 2D 中,可以使用 2D 盒型碰撞体 和 2D 圆形碰撞体。可以将任意数量的上述碰撞体添加到单个游戏对象以创建__复合碰撞体__。 碰撞体 - Unity 手册 这里还有另外一个:触发检测函数里的Collider 碰撞体参数和知识点 碰撞器知识点 知识回顾 碰撞产生的必要条件:两个物体都有碰撞器、至少一个物体有刚体 碰撞器表示物体的体积(形状)刚体会利用体积进行碰撞计算 模拟真实的碰撞效果,产生力的作用 3D碰撞器种类 盒状 球状 胶囊 网格 轮胎 地形 共同参数 Is Trigger -...
U1L13-1——物理系统之刚体
U1L13-1——物理系统之刚体 刚体 ** (Rigidbody)** 刚体 (Rigidbody) 是实现游戏对象的物理行为的主要组件。连接刚体后,对象将立即响应重力。 如果还添加了一个或多个__碰撞体__组件,则游戏对象会因发生碰撞而移动。 由于刚体组件会接管附加到的游戏对象的运动,因此不应试图借助脚本通过更改变换属性(如位置和旋转)来移动游戏对象。 相反,应该施加力来推动游戏对象并让物理引擎计算结果。 在某些情况下,可能希望游戏对象具有刚体,并让刚体的运动摆脱物理引擎的控制。 例如,可能希望直接从脚本代码控制角色,但仍允许触发器检测角色(请参阅碰撞体主题下的_触发器_)。 脚本产生的这种非物理运动称为_运动学_运动。刚体组件有一个名为 Is Kinematic 的属性, 该属性可以让刚体摆脱物理引擎的控制,并允许通过脚本以运动学方式来移动刚体。 可以通过脚本来更改 Is Kinematic 的值,从而为某个对象开启和关闭物理引擎,但这会产生性能开销,应谨慎使用。 有关这些组件的设置和脚本选项的更多详细信息,请参阅刚体和 2D 刚体参考页面。 刚体概述 - Unity...
U1L13——物理系统相关
U1L13——物理系统相关 Unity 可帮助您在项目中模拟物理系统,以确保对象正确加速并对碰撞、重力和各种其他力做出响应。 具体可见 物理系统 - Unity 手册 大部分游戏项目使用 Nvidia PhysX 引擎:可通过 Unity 内置的 3D 物理引擎获得的主要组件,您可以在面向对象的项目中使用这些组件。本节包括以下主题: 与物理系统相关的主要概念的概述:刚体、碰撞体、关节、物理接合和角色控制器。 有关特定物理环境的一些说明:连续碰撞检测和多场景物理。 物理调试可视化的描述。 物理系统主要内容 刚体 RigidBody 碰撞器 Collider 物理材质 Physic Material 碰撞检测函数 碰撞检测函数 刚体加力 刚体加力 物理系统第二部分 该部分主要讲解了范围检测和射线检测 —— Unity物理2 物理系统2D部分 该部分主要讲解了2D物理相关 —— Unity2D物理
U1L12——光面板相关基础
U1L12——光面板相关基础 在Window - Randering - Lighting打开 这里只讲解环境和其他设置,更多的内容在进阶里讲解 Environment - 环境相关设置 Skybox Material - 天空盒材质,可以改变天空盒 关于天空盒材质,详见:US3S8L2——天空盒 Sun Source - 太阳来源 不设置会默认使用场景中最亮的方向光代表太阳 Realtime Shadow Color - 实时阴影颜色 Environment Lighting - 环境光设置 Source - 环境光光源颜色 Skybox - 天空和材质作为环境光颜色 Gradient - 可以为天空、地平线、地面单独选择颜色和他们之间混合 它具体作用会在 US3S1L5——Phong光照模型 中解释 Intensity Multiplier - 环境光亮度 Ambient Mode - 全局光照模式只有启用了实时全局和全局烘焙时才有用 Realtime(已弃用) Baked Environment...
U1L11——光源组件
U1L11——光源组件 Light Unity 中光照的工作方式类似于光在现实世界中的情况。Unity 使用详细的光线工作模型来获得更逼真的结果,并使用简化模型来获得更具风格化的结果。 Light的参数如下 Type - 光源类型 Spot - 聚光灯 Range - 发光范围距离 Spot Angle - 光锥角度 Directional - 方向光(环境光) Point - 点光源 Area - 面光源 Color - 颜色 Mode - 光源模式 Realtime 实时光源 每帧实时计算,效果好,性能消耗大 Baked 烘焙光源 事先计算好,无法动态变化 Mixed 混合光源 预先计算+实时运算 Intensity - 光源亮度 Indirect Multiplier - 环境光亮度 改变间接光的强度 低于1,每次反弹会使光更暗,大于1,每次反弹会使光更亮 Shadow Type - 阴影类型 No Shadows - 关闭阴影 Hard Shadows -...
U1L10-2——Camera代码相关
U1L10-2——Camera代码相关 本章代码关键字 12345678910Camera.main //获取主摄像机(有“MainCamera”Tag的摄像机)Camera.allCamerasCount //获取摄像机的数量Camera.allCameras //得到所有摄像机Camera.onPreCull //摄像机 剔除前 处理的委托函数Camera.onPreRender //摄像机 渲染前 处理的委托Camera.onPostRender //摄像机 渲染后 处理的委托.界面上的参数 //界面上的参数 都可以在Camera窗口中找到,参考可编辑参数相关Camera.main.WorldToScreenPoint() //转换过后 x和y对应的就是屏幕坐标 z对应的 是...
U1L10-1——Camera可编辑参数相关
U1L10-1——Camera可编辑参数相关 Camera窗口 Camera组件参数如下: Clear Flags - 清除背景方式 skybox 天空盒 Solid Color 颜色填充,将没有拍摄到内容的部分用颜色填充 Depth only 只画该层,背景透明 该选项常用于多摄像机时,让拥有渲染深度(Depth)更高的摄像机叠加它拍摄到的内容(物体或者特效)到渲染深度低的摄像机上, 但又不覆盖渲染深度低的摄像机拍到的内容 注意!只有一个摄像机使用该选项会出现渲染残影 因为没有别的摄像机去覆盖掉它之前拍摄渲染出来的内容 Don’t Clear 不移除,覆盖渲染 Culling Mask - 选择性渲染部分层级,可以指定只渲染对应层级的对象 Projection - 摄像机投影模式 Perspective 透视模式 FOV Axis - 视场角 轴 - 决定了光学仪器的视野范围 Vertical - 以竖直方向夹角为准 Horizontal - 以水平方向夹角为准 Field of view (FOV) -...
U1L10——Camera摄像机相关
U1L10——Camera摄像机相关 Camera 摄像机 (Camera) 是供玩家观看世界的设备。 屏幕空间的点以像素定义。屏幕的左下角为 (0,0),右上角 为 (pixelWidth,pixelHeight)。z 位置为与摄像机的距离,采用世界单位。 视口空间的点是标准化的、相对于摄像机的点。摄像机左下角为 (0,0),右上角为 (1,1)。z 位置为与摄像机的距离,采用世界单位。 在全球坐标中定义一个世界空间点(例如,Transform.position)。 Camera可编辑参数相关 U1L10-1——Camera可编辑参数相关 Camera代码相关 U1L10-2——Camera代码相关
U1L9——Screen屏幕相关
U1L9——Screen屏幕相关 Screen 访问显示信息。Screen 类可用于获取支持的分辨率列表、切换当前分辨率、 隐藏或显示系统鼠标指针。 本章代码关键字 12345678910111213141516171819202122Resolution //表示分辨率的结构体.wideh //分辨率的宽.height //分辨率的高Screen.currentResolution //获取当前屏幕的分辨率Screen.width //当前屏幕的宽Screen.height //当前屏幕的高Screen.sleepTimeout ...
U1L8——Input输入相关
U1L8——Input输入相关 Input 输入 - Unity 手册 访问输入系统的接口。这是老输入系统,新输入系统请看这里 ——> U4S1 Input类 提供了大部分和输入相关的内容,包括:鼠标 键盘 触屏 手柄 重力感应 对于我们目前来说,鼠标 键盘 是必须掌握的核心知识 重点是鼠标和键盘相关的API:GetAxis 注意!输入相关内容一定写在Update中 本章代码关键字 12345678910111213141516171819202122232425262728293031Input //访问输入系统的接口//鼠标相关Input.mousePosition //获取鼠标在屏幕的位置,返回值是Vector3,但是只有x和y有值Input.GetMouseButtonDown() //鼠标按下一瞬间返回True的方法,参数:0左键 1右键 2中键Input.GetMouseButtonUp() //鼠标抬起一瞬间返回True的方法(只会进入一次)参数:0左键 1右键...