碰撞与休眠 上一篇笔记说过,当给予游戏对象刚体这个组件以后,那么这个组件将存在碰撞的可能性.一旦刚体開始运动,那么系统方法便会监视刚体的碰撞状态.一般刚体的碰撞分为三种:进入碰撞,碰撞中,和碰撞结束.关于休眠能够理解成为让游戏对象变成精巧状态.假设给某个游戏对象休眠的状态,那么这个物体将立刻精巧,不再运动. 碰撞 首先学习下碰撞几个重要的方法: OnCollisionEnter(  ):刚体開始接触的时候,马上调用. OnCollisionStay(  ):碰撞过程中,每帧都会调用此方法,直到撞…
<?php print_r($_SERVER); //$_SERVER预编译变量[数组]输出请求报文,注意大小写 echo "<br/>"; foreach($_SERVER as $key=>$val) { echo $val."<br/>"; } echo "当前访问的IP:".$_SERVER["REMOTE_ADDR"]; if($_SERVER["REMOTE_ADDR&…
新动画系统: 反向动力学动画(IK功能): 魔兽世界(头部动画),神秘海域(手部动画),人类一败涂地(手部动画) 如何启用(调整) 1.必须是新动画系统Animator 设置头.手.肘的目标点 2.动画类型必须是Humanoid,除此之外其他类型都不可以 3.动画系统对应层级的IKPass必须开启 4.相应的IK调整方法只能写在OnAnimatorIK(脚本挂载和Animator同一级别) using System.Collections; using System.Collections.Ge…
目录 1. 概述 2. 详论 2.1. 网格(Mesh) 2.1.1. 顶点 2.1.2. 顶点索引 2.2. 材质(Material) 2.2.1. 创建材质 2.2.2. 使用材质 2.3. 光照 3. 代码 1. 概述 上一篇文章<Unity3D学习笔记1--绘制一个三角形>中介绍了Unity3D的HelloWorld--绘制一个简单的三角形.不过这个三角形太简单了,连材质都没有.那么这里就将三角形扩展为一个矩形的面,并且为这个面贴上纹理. 2. 详论 2.1. 网格(Mesh) 前面说…
目录 1. 概述 2. 详论 2.1. 创建材质 2.2. 着色器 2.2.1. 名称 2.2.2. 属性 2.2.3. SubShader 2.2.3.1. 标签(Tags) 2.2.3.2. 渲染状态(RenderSetup) 2.2.3.3. 通道(Pass) 2.2.4. 回退(FallBack) 2.3. 渲染管线 1. 概述 在上一篇文章<Unity3D学习笔记2--绘制一个带纹理的面>中介绍了如何绘制一个带纹理材质的面,并且通过调整光照,使得材质生效(变亮).不过,上篇文章隐藏了…
unity3d学习笔记(一) 第一人称视角实现和倒计时实现 1. 第一人称视角 (1)让mainCamera和player(视角对象)同步在一起 因为我们的player是生成的,所以不能把mainCamera直接放到预支对象里,所以我们实现的方法就是让player和camera的相对位置不变 创建脚本 CameraFlow.cs用于控制mainCamera移动,把此脚本挂到mainCamera中, 同时设置mainCamera为刚体,重力为零(不然mainCamera会掉), 而且把mainCa…
目录 1. 概述 2. 详论 3. 其他 4. 参考 1. 概述 在文章Unity3D学习笔记2--绘制一个带纹理的面中使用代码的方式创建了一个Mesh,不过这套接口在Unity中被称为简单接口.与其相对应的,Unity还提供了一套高级API来创建Mesh. 2. 详论 根据Unity文档的论述,使用高级接口能够得到更高的性能,能够跳过一些验证检查.但是这并不是最关键的,简单接口有个最大的缺点是顶点个数超过65535个时就有问题(至少在2019.4.3f1版本还是这样). 话不多说,直接上代码:…
目录 1. 概述 2. 详论 3. 参考 1. 概述 在之前的文章中说到,一种材质对应一次绘制调用的指令.即使是这种情况,两个三维物体使用同一种材质,但它们使用的材质参数不一样,那么最终仍然会造成两次绘制指令.原因在于,图形工作都是一种状态机,状态发生了变化,就必须进行一次绘制调用指令. GPU实例化用于解决这样的问题:对于像草地.树木这样的物体,它们往往是数据量很大,但同时又只存在微小的差别如位置.姿态.颜色等.如果像常规物体那样进行渲染,所使用的绘制指令必然很多,资源占用必然很大.一个合理的…
目录 1. 概述 2. 详论 2.1. 实现 2.2. 解析 3. 参考 1. 概述 在上一篇文章<Unity3D学习笔记6--GPU实例化(1)>详细介绍了Unity3d中GPU实例化的实现,并且给出了详细代码.不过其着色器实现是简单的顶点+片元着色器实现的.Unity提供的很多着色器是表面着色器,通过表面着色器,也是可以实现GPU实例化的. 2. 详论 2.1. 实现 首先,我们还是挂接与上篇文章一样的脚本: using UnityEngine; [ExecuteInEditMode] p…
目录 1. 概述 2. 详论 2.1. 自动实例化 2.2. MaterialPropertyBlock 3. 参考 1. 概述 在前两篇文章<Unity3D学习笔记6--GPU实例化(1)><Unity3D学习笔记6--GPU实例化(2)>分别介绍了通过简单的顶点着色器+片元着色器,以及通过表面着色器实现GPU实例化的过程.而在Unity的官方文档Creating shaders that support GPU instancing里,也提供了一个GPU实例化的案例,这里就详细…