数学函数 Abs(x) :返回输入参数的绝对值;Clamp(x,a,b):如果x小于a则返回a;如果x大于b则返回b;Cross(A,B):返回两个三元向量的叉积;degree(x):输入参数为弧度值(radians),函数将其转换为角度值;determinant(m):计算矩阵的行列式因子;dot(A,B):返回A和B的点积;exp2(x): 2的x次方;lerp(a,b,f)
转载 2024-03-19 17:02:34
304阅读
当你想将颜色值规范到0~1之间时,你可能会想到使用saturate函数(saturate(x)的作用是如果x取值小于0,则返回值为0。如果x取值大于1,则返回值为1。若x在0到1之间,则直接返回x的值.),当然saturate也可以使用变量的swizzled版本,比如saturate(somecol
原创 2021-07-20 16:41:12
1593阅读
本文分享Unity中的AI算法和实现1-Waypoint在Unity中, 我们有一些有趣且常见的AI算法可以研究和使用, 其中最常见的就是怪物的简单AI, 比如在RPG游戏里, 怪物在某些点定点巡逻, 当玩家进入检测区域时, 怪物会主动追击玩家, 追击到玩家后对玩家进行伤害, 或者在超过最大距离后脱离追击状态, 由恢复到巡逻状态.我们接下来几篇文章会简单的实现一个基于有限状态机的怪物AI, 这篇文
转载 2024-09-03 13:09:02
44阅读
参考官网文档http://docs.unity3d.com/Manual/ExecutionOrder.htmlunity脚本的生命周期流程图 编辑器(Editor) Reset:函数被调用来初始化脚本属性当脚本第一次被附到对象上,并且在Reset命令被使用时也会调用。 第一次场景加载(First Scene Load) 这些函数在场景开始时被调用,而且场景中的每个对象只会调用一次
首先要明确的是MonoBehaviour是每个脚本的基类.每个Javascript脚本自动继承MonoBehaviour.使用C#或Boo时,需要显式继承MonoBehaviour.以下是一些常用的函数调用顺序的说明: Awake:当一个脚本实例被载入时Awake被调用,要先于Start。建议少用,此刻物体可能还没有实例化出来,会影响程序执行顺序。需要注意的是,假设实例化一个物件:&nb
转载 2024-03-27 20:36:16
37阅读
1.透明度混合必须关闭深度写入,开启混合模式Shader"Unity Shaders Book/Chapter 8/Alpha Blend" { Properties { _Color ("Color Tint", Color) = (1,1,1,1) _MainTex("MainTex", 2D) = "White" {} //在透明纹理的基础上控制整体的透明度 _Alpha
转载 2024-06-27 21:55:12
90阅读
光照模型我们是如何看到这个世界的当光照射到物体表面时,一部分被物体表面吸收(absorption),另一部分被散射(scattering)散射有两种方向:一种散射到物体内部,称为折射(refraction)或透射(transmission);另一种散射到外部,称为反射(reflection)对于不透明物体,折射进物体内部的光线一部分与内部颗粒相交,重新发射出物体表面,这部分光线与具有与反射光线不同
转载 2024-05-07 08:35:15
42阅读
(译者注:即本文,后续还有5篇文章)详细介绍了Unity3D中的表面着色器(Surface Shader)的,为学习更复杂的Shader编程打下基础。动机 如果你是刚刚接触Shader编程的新手,你可能不知道从何开始踏出Shader编程的第一步。本教程将带你一步步完成一个表面着色器(Surface Shader)和片段着色器(Fragment Shader)。本教程也将介绍在Unity3D Sha
为了防止点积结果为负值,我们需要使用max操作,而CG提供了这样的函数。使用另外一个CG函数也可以达到这样的目的。即saturate函数。函数:saturate(x)参数:x:用于操作的标量或矢量,可以是float,float2,float3等类型。描述:把x截取在[0,1]范围内,如果x是一个矢量,那么会对它的每一个分量进行这样的操作。1.逐顶点光照shader "custom/Diffuse
转载 2024-03-06 14:33:41
510阅读
一、前言首先,来看一下效果图,如图所示: 这个效果要使得摄像机的Clear Flags为Solid Color模式,如果为其他模式可能会看不到外部那一圈光环。二、实现原理1、Shader部分:将需要使用两个Pass块,两个Pass块里输出的颜色不同,并最终使用透明度混合得到最后输出的像素颜色。●第一个Pass块:这个Pass块顶点和片段程序都比较简单,代码如下:Pass{
转载 3月前
384阅读
一、UV帧动画举个例子,对于一张四帧贴图(横向):1.UV缩放:首先就是让它只显示四分之一吧,也就是将uv值压缩(x轴),原来的uv范围由(0,1)转为(0,0.25),用代码表示就是spriteUV.x *= 1.0 / 42.UV移动:以贴图的左下角为例(设uv值为(0,0)),那么随着时间的变化,uv值就应该变为(0.25,0),(0.5,0),(0.75,0),(1,0),每次的增加量就是
节省带宽1 减少纹理大小所有纹理的长宽比最好是正方形,且长宽值最好是2的整数幂。使用多级渐远纹理技术。通过把纹理类型设置为Advanced, 就可以自定义许多选项,例如,是否生成多级渐远纹理(mipmaps), 当勾选了Generate Mip Maps选项后,Unity就会为同一张纹理创建出很多不同大小的小纹理,构成一个纹理金字塔。而在游戏运行中就可以根据距离物体的远近,来动态选择使用哪一个纹理
转载 2024-06-16 12:07:02
56阅读
 _MainTex_ST(1)简单来说,TRANSFORM_TEX(tex,name) (tex.xy * name##_ST.xy + name##_ST.zw)主要作用是拿顶点的uv去和材质球的tiling和offset作运算, 确保材质球里的缩放和偏移设置是正确的。(v.texcoord就是顶点的uv)下面这两个函数是等价的。o.uv = TRANSFORM_TEX(v.texco
转载 2024-07-09 19:46:12
53阅读
UE427_常用函数节点说明Normalize to Range——归一化算法 计算方法: value:20 rangemin:10 rangmax:50 returnvalue:(20-10)/50 = 0.25NormalizeNearly Equal(float)——以A-B得差值来与ErrorToLerance做比较,来判断是否相邻。Lerp——插值计算PowerFInterp To——在
转载 2024-07-04 15:21:50
133阅读
函数功能:当数据超过数据类型最大值时取最大值, 当数据小于数据类型最小值时取最小值 uchar i=200; qDebug()<<i<<Qt::endl; //i输出200 i=cv::saturate_cast<uchar>(255); qDebug()<<i<<Qt::endl; //i输出25
原创 2022-01-25 14:48:56
389阅读
1、OpenGL实用工具包(GLUT) OpenGL包含渲染函数,但被涉及成独立于任何窗口系统和操作系统。因此, OpenGL并没用用于打开窗口以及检测键盘或鼠标事件的函数。GLUT库被用来简化这些相关任务,此外还提供了一些用于创建复杂三位物体(如球体、圆环和茶壶等)的函数。     窗口管理函数    glutInit(int *arg
转载 2024-03-18 08:02:47
86阅读
整体思路:在安卓里面打包aar,再集成到unity里面,用unity调安卓方法来达到目的1.下载腾讯广点通的SDK,地址 2.新建一个安卓项目(能打包aar就行,具体百度安卓跟unity交互) 3.把腾讯demo里面的lib文件夹下面的SDK拿到新项目lib文件夹里面,把Constants类也复制进来4.找到腾讯demo里面app的bulid.gradle,全部复制到新项目中,当然apply pl
转载 2024-04-01 09:12:48
0阅读
游戏中AI的感知用的最多的是看到或者听到,也就是:1.视觉感知2.听觉感知 视觉感知:视觉感知一般会有一个视野范围,这个范围与角色的朝向有关,只有在视觉范围内角色才有可能感知得到,这个范围与一个扇形接近,可以直接用半径和角度来控制。潜在目标除了需要在视视觉范围内之外,探索者的视线还不能被其他障碍物遮挡,这里可以用射线来检测——发出一条从探索者到潜在目标的射线,如果目标是这条射线撞到的第一
转载 2024-04-24 21:48:45
95阅读
什么是代理模式在代理模式(Proxy Pattern)中,一个类代表另一个类的功能。这种类型的设计模式属于结构型模式。它为其他对象提供一种代理以控制对这个对象的访问, 在直接访问对象时带来的问题,比如说:要访问的对象在远程的机器上。在面向对象系统中,有些对象由于某些原因(比如对象创建开销很大,或者某些操作需要安全控制,或者需要进程外的访问),直接访问会给使用者或者系统结构带来很多麻烦,我们可以在访
  1.镜头移动镜头移动首先应该是以玩家为中心所以镜头移动的坐标应该以玩家的坐标作参考移动而玩家的坐标是从Transform中设置的所以应该为Main Camera新建一个脚本,在里面声明Transform对象用于获取玩家坐标  //这里用不上Strat方法在这里还需要知道大写开头的的函数名Transform只代表一个类型,需要有实际引用的变量而小写开头的t
转载 2024-02-08 15:30:20
117阅读
  • 1
  • 2
  • 3
  • 4
  • 5