• Unity 3D 常用代码收集总结(转载)


      1 //创建一个名为"Player"的游戏物体  
      2 //并给他添加刚体和立方体碰撞器.  
      3 player=new GameObject("Player");  
      4 player.AddComponent("Rigidbody");  
      5 player.AddComponent("BoxCollider");  
      6   
      7 //创建一个没有名称的游戏物体  
      8 //并给他添加刚体和立方体碰撞器.Transform总是被添加到该游戏物体.  
      9 player=new GameObject();  
     10 player.AddComponent("Rigidbody");  
     11 player.AddComponent("BoxCollider");  
     12 //添加名为FoobarScript的脚本到游戏物体  
     13 gameObject.AddComponent("FoobarScript");  
     14 //添加球形碰撞器到游戏物体  
     15 gameObject.AddComponent("FoobarCollider");  
     16 注意,没有RemoveComponent(),来移除组件,使用Object.Destroy.  
     17   
     18   
     19   
     20 //不激活该游戏物体.  
     21 gameObject.active=false;(已经弃用)
     22 gameObject.SetActive(false);
     23   
     24 //附加到这个游戏物体的动画组件(只读)(如果没有为null)  
     25 var other: GameObject;  
     26 other.animation.Play();  
     27   
     28 //附加到这个游戏物体的声音组件(只读)(如果没有为null)  
     29 var other: GameObject;  
     30 other.audio.Play();  
     31   
     32   
     33 //附加到这个游戏物体的相机(只读)(如果没有为null)  
     34 var other: GameObject;  
     35 other.camera.fieldOfView=45;  
     36   
     37 //附加到这个游戏物体的碰撞器(只读)(如果没有为null)  
     38 var other: GameObject;  
     39 other.collider.material.dynamicFriction=1;  
     40   
     41   
     42 //附加到这个游戏物体的恒定力(只读)(如果没有为null)  
     43 var other: GameObject;  
     44 other.constantForce.relativeForce=Vector3(0,0,1);  
     45   
     46 //附加到这个游戏物体的GUIText,GUITexture(只读)(如果没有为null)  
     47 var other: GameObject;  
     48 other.guiText.text="HelloWorld";  
     49   
     50   
     51 //附加到这个游戏物体的HingeJoint(只读)(如果没有为null)  
     52 var other: GameObject;  
     53 other.hingeJoint Spring.targetPosition=70;  
     54   
     55 //游戏物体所在的层,一个层在[0...32]之间.  
     56 Layer可以用来选择性的渲染或忽略投射.  
     57 //设置游戏物体到忽略投射物体的层上  
     58 gameObject.layer=2;  
     59   
     60   
     61 //附加到这个游戏物体的光影(只读)(如果没有为null)  
     62 var other: GameObject;  
     63 other.light.range=10;  
     64   
     65 //附加到这个游戏物体的网络视(只读)(如果没有为null)  
     66 var other: GameObject;  
     67 other.networkView.RPC("MyFunction",RPCMode.All,"someValue");  
     68   
     69   
     70 //附加到这个游戏物体的粒子发射器(只读)(如果没有为null)  
     71 var other: GameObject;  
     72 other.particleEmitter.emite=true;  
     73   
     74 //附加到这个游戏物体的渲染器(只读)(如果没有为null)  
     75 var other: GameObject;  
     76 other.renderer.material.color=Color.green;  
     77   
     78   
     79 //附加到这个游戏物体的刚体(只读)(如果没有为null)  
     80 var other: GameObject;  
     81 other.rigidbody.AddForce(1,1,1);  
     82   
     83 //标签可以用来标识一个游戏物体。标签在使用前必须在标签管理器中定义。  
     84 gameObject.tag="Player";  
     85   
     86   
     87 //附加到这物体的变换. (如果没有为null)  
     88 var other: GameObject;  
     89 other.transform.Translate(1,1,1);  
     90   
     91   
     92   
     93 //在这个游戏物体或其任何子上的每个MonoBehaviour上调用methodName方法。  
     94 //通过使用零参数,接收方法可以选择忽略parameter。如果options被设置为  
     95 SendMessageOptions.RequireReceiver,那么如果这个消息没有被任何组件接收时将打印一个  
     96 错误消息。  
     97 ///使用值5调用函数ApplyDamage  
     98 gameObject.BroadcastMessage("ApplyDamage",5);  
     99 //所有附加到该游戏物体和其子物体上脚本中的  
    100 //ApplyDamage函数都将调用  
    101 function ApplyDamage(damage)  
    102   
    103 {  
    104      print(damage)  
    105 }  
    106   
    107    
    108   
    109    
    110   
    111 //立即死亡触发器  
    112 //销毁任何进入到触发器的碰撞器,这些碰撞器被标记为Player.  
    113 function OnTriggerEnter(other: Collider)  
    114 {  
    115     if(other.gameObject.CompareTag("Player"))  
    116     {  
    117          Destroy(other.gameObject);  
    118      }  
    119 }  
    120   
    121    
    122   
    123   
    124 如果游戏物体有type类型的组件就返回它,否则返回null. 你可以使用这个函数  
    125 访问内置的组件或脚本.  
    126 GetComponent是防卫其他组件的主要方法。对于Javascript脚本的类型总是脚本显示  
    127 在工程视图中的名称。例如:  
    128 function Start()  
    129 {  
    130      var curTransform: Transform;  
    131      curTransform=gameObject.GetComponent(Transform);  
    132      //这等同于  
    133      curTransform=gameObject.transform;  
    134 }  
    135 function Update()  
    136   
    137 {  
    138      //为访问附加在同一游戏物体上  
    139      //其他脚本内的公用变量和函数  
    140      //(ScriptName为Javascript文件名)  
    141      var other: ScriptName=gameObject.GetComponent(ScriptName);  
    142      //调用该脚本中的DoSomething函数  
    143      other DoSomething();  
    144      //设置其他脚本实例中的另一个变量  
    145      other.someVariable=5;  
    146 }  
    147   
    148    
    149   
    150 //返回type类型的组件,这个组件位于这个游戏物体或任何它的子物体上,使用深度优先搜索。  
    151 //只有激活的组件被返回。  
    152 var script: ScriptName=gameObject.GetComponentInChildren(ScriptName);  
    153 script.DoSomething();      
    154   
    155    
    156   
    157    
    158   
    159 //返回该游戏物体上所有type类型的组件。  
    160 //在这个游戏物体和所有它的子物体上  
    161 //的HingeJoints上禁用弹簧  
    162 var hingeJoints=gameObject.GetComponents(HingeJoint);  
    163 for(var joint: HingeJoint in hingeJoints)  
    164   
    165 {  
    166      joint.useSpring=false;  
    167 }  
    168   
    169   
    170   
    171 //返回所有type类型的组件,这些组件位于该游戏物体或任何它的子物体上。  
    172 //只有激活的组件被返回。  
    173 //在这个游戏物体和所有它的子物体上  
    174 //的所有HingeJoints上禁用弹簧  
    175 var hingeJoints=gameObject.GetComponentsInChildren(HingeJoint);  
    176 for(var joint: HingeJoint in hingeJoints)  
    177   
    178 {  
    179      joint.useSpring=false;  
    180 }  
    181   
    182    
    183   
    184 //在一个特定的时间采样动画,用于任何动画目的。  
    185 //出于性能考虑建议使用Animation接口,这将在给定的time采用animation,任何被动化的组件属性都将被这个采样值替换,多数时候你会使用Animation.Play. SampleAnimation  
    186 //用于当你需要以无序方式或给予一些特殊的输入在帧之间跳跃时使用。参见:Aniamtion  
    187 //通过采样每一帧或动画剪辑  
    188 var clip.AniamtionClip  
    189 function Update()  
    190 {  
    191     gameObject.sampleAnimation(clip, clip.length-Time.time);  
    192 }  
    193   
    194   
    195 //设置这个物体和所以子游戏物体的机会状态。  
    196 gameObject.SetActiveRecursion(true);  
    197   
    198     
    199   
    200 //用几何的网格渲染器和适当的碰撞器创建一个游戏物体。  
    201 ///在场景中创建一个平面,球体和立方体  
    202 function Start()  
    203 {  
    204      var plane:GameObject= GameObject.CreatePrimitive(PrimitiveType.Plane);  
    205   
    206      var cube=GameObject.CreatePrimitive(PrimitiveType.Cube);  
    207      cube.transform.position=Vector3(0,0.5,0);  
    208   
    209       var sphere=GameObject.CreatePrimitive(PrimitiveType.Sphere);  
    210      sphere.transform.position=Vector3(0,1.5,0);  
    211   
    212      var capsule=GameObject.CreatePrimitive(PrimitiveType.Capsule);  
    213      capsule.transform.position=Vector3(2,1,0);  
    214   
    215       var cylinder=GameObject.CreatePrimitive(PrimitiveType.Cylinder);  
    216      cylinder.transform.position=Vector3(-2,1,0);  
    217 }  
    218   
    219     
    220   
    221 static function Find(name: string): GameObject  
    222   
    223 描述:依据name查找物体并返回它.  
    224 如果没有物体具有名称name返回null. 如果name包含'/'字符它将像一个路径名一样穿  
    225 越层次,这个函数只返回激活的游戏物体。  
    226 出于性能考虑建议不要在每帧中都是有该函数,而是在开始时调用并在成员变量中缓存结果  
    227 或者用GameObject.FindWithTag.  
    228 //这返回场景中名为Hand的游戏物体.  
    229 hand=GameObject.Find("Hand");  
    230 //这将返回名为Hand的游戏物体.  
    231 //在层次试图中Hand也许没有父!  
    232 hand=GameObject.Find("/Hand");  
    233 //这将返回名为Hand的游戏物体.  
    234 //它是Arm>Monster的子.  
    235 //在层次试图中Monster也许没有父!  
    236 hand=GameObject.Find("/Monster/Arm/Hand");  
    237 //这将返回名为Hand的游戏物体.  
    238 //它是Arm>Monster的子.  
    239 //Monster有父.  
    240 hand=GameObject.Find("/Monster/Arm/Hand");  
    241 这个函数最常用与在加载时自动链接引用到其他物体,例如,在MonoBehaviour.Awake  
    242 或MonoBehaviour.Start内部. 处于性能考虑你不应该在每帧中调用这个函数,例如  
    243 MonoBehaviour.Update内. 一个通用的模式是在MonoBehaviour.Start内将一个游戏物体赋给  
    244 一个变量. 并在MonoBehaviour.Update中使用这个变量.  
    245 //在Start中找到Hand并在每帧中选择它  
    246 private var hand: GameObject;  
    247 function Start()  
    248    
    249 {  
    250      hand=GameObject.Find("/Monster/Arm/Hand");  
    251 }  
    252 function Update()  
    253 {  
    254      hand.transform.Rotate(0,100*Time.deltaTime,0);  
    255 }  
    256   
    257    
    258   
    259 function FindGameObjectsWithTag(tag: string): GameObject[]  
    260   
    261 描述:返回标记为tag的激活物体列表,如果没有发现返回null.  
    262 标签在使用前必须在标签管理中定义。  
    263 //在所有标记为"Respawn"的物体位置处  
    264 //实例化respawnPrefab  
    265    
    266 var respawnPrefab: GameObject;  
    267 var respawns=GameObject.FindGameObjectsWithTag("Respawn");  
    268 for(var respawn in respawns)  
    269 Instantiate(respawnPrefab, respawn.position, respawn.rotation);  
    270 //打印最接近的敌人的名称  
    271 print(FindClosestEnemy().name);  
    272 //找到最近的敌人的名称  
    273 function FindClosestEnemy(): GameObject  
    274 {  
    275      //找到所以标记为Enemy的游戏物体  
    276      var gos: GameObject[]  
    277      gos=GameObject.FindGameObjectsWithTag("Enemy");  
    278      var closest: GameObject;  
    279      var distance=Mathf.Infinity;  
    280      var position=transform.position;  
    281      //遍历它们找到最近的一个  
    282      for(var go: GameObject in gos)  
    283      {  
    284            var diff=(go.transform.position-position);  
    285            var curDistance=diff.sqrMagnitude;  
    286            if(curDistance<distance)  
    287   
    288    
    289   
    290            {  
    291                closest=go;  
    292                distance=curDistance;  
    293             }  
    294        }  
    295       return closest;  
    296 }  
    297   
    298    
    299   
    300 返回标记为tag的一个激活游戏物体,如果没有发现返回null.  
    301 标签在使用前必须在标签管理中定义。  
    302 //在标记为"Respawn"的物体位置处  
    303 //实例化一个respawnPrefab  
    304 var respawnPrefab: GameObject;  
    305 var respawns=GameObject.FindWithTag("Respawn");  
    306 Instantiate(respawnPrefab, respawn.position, respawn.rotation);  
    307    
    308   
    309 主材质的纹理缩放。  
    310 这与使用带有"_MainTex"名称的GetTextureScale或SetTextureScale相同。  
    311 function Update()  
    312   
    313 {  
    314      var scalex=Mathf.Cus(Timetime)*0.5+1;  
    315      var scaleY=Mathf.Sin(Timetime)*0.5+1;  
    316      renderer.material.mainTextureScale=Vector2(scaleX,scaleY);  
    317 }  
    318   
    319 参见:SetTextureScale.GetTextureScale.  
    320   
    321    
    322   
    323 在这个材质中有多少个pass(只读).  
    324 这个最常用在使用GL类之间绘制的代码中(只限于Unity Pro). 例如,Image Effects使用  
    325 材质来实现屏幕后期处理. 对材质中的每一个pass(参考SetPass)它们激活并绘制一个全屏  
    326 四边形。  
    327 这里是一个全屏图形效果的例子,它反转颜色。添加这个脚本到相机并在播放模式中  
    328 查看。  
    329 private var mat: Material;  
    330 function Start()  
    331 {  
    332 mat=new Material(  
    333 "Shader"Hidden/Invert"{"+  
    334 "SubShader{"+  
    335 "Pass{"+  
    336 "ZTestAlways Cull Off ZWrite Off"+  
    337 "SetTexture[_RenderTex]{combine one-texture}"+  
    338 "}"+  
    339 "{"+  
    340 "}"+  
    341 );  
    342 }  
    343 function OnRenderImage(source: RenderTexture, dest: RenderTexture){  
    344 RenderTexture.active=dest;  
    345 source.SetGlobalShaderProperty("_RenderTex");  
    346 GL.PushMatrix();  
    347 GL.LoadOrtho();  
    348 //对于材质中的每个pass(这里只有一个)  
    349 for(var i=0; i<mat.passCount; ++i){  
    350 //激活pass  
    351 mat.SetPass(i);  
    352 //绘制一个四边形  
    353 GL.Begin(GLQUADS);  
    354 GL.TEXCoord2(0,0); GL.Vertex3(0,0,0.1);  
    355 GL.TEXCoord2(1,0); GL.Vertex3(1,0,0.1);  
    356 GL.TEXCoord2(1,1); GL.Vertex3(1,1,0.1);  
    357 GL.TEXCoord2(0,1); GL.Vertex3(0,1,0.1);  
    358 GL.End();  
    359 }  
    360 GL.PopMatrix();  
    361 }  
    362   
    363 参见:SetPass函数,GL类,ShaderLab documentation.  
    364   
    365    
    366   
    367    
    368   
    369 该材质使用的着色器。  
    370 //按下空格键时,  
    371 //在Diffuse和Transparent/Diffuse着色器之间切换  
    372 private var shader1=Shader.Find("Diffuse");  
    373 private var shader2=Shader.Find("Transparent/Diffuse");  
    374 function Update()  
    375   
    376 {  
    377       if(Input.GetButtonDown("Jump"))  
    378   
    379       {  
    380            if(renderer.material.shader--shader1)  
    381                rendere.material.shader=shader2;  
    382            else  
    383                renderer.material.shader=shader1;  
    384        }  
    385 }  
    386   
    387 参见:Shader.Find方法,Material, ShaderLab documentation.  
    388   
    389    
    390   
    391    
    392   
    393 从一个源shader字符串创建一个材质。  
    394 如果你有一个实现自定义特效的脚本,你需要使用着色器和材质实现所有的图像设置。  
    395 在你的脚本内使用这个函数创建一个自定义的着色器和材质。在创建材质后,使用SetColor,  
    396 SetTexture, SetFloat, SetVector, SetMatrix来设置着色器属性值。  
    397 //创建一个附加混合材质并用它来渲染  
    398 var color=Color.white;  
    399 function Start()  
    400 {  
    401 var shader Text=  
    402 "shader"Alpha Additive"{"+  
    403 Properties{_Color("Main Color", Color)=(1,1,1,0)}"+  
    404 "SubShader {"+  
    405 "Tags {"Queue"="Transparent"}"+  
    406 "Pass {"+  
    407 "Blend One One ZWrite Off ColorMask RGB"+  
    408 "Material {Diffuse[_Color]Ambient[_Color]}"+  
    409 "Lighting On"+  
    410 "SetTexture[_Dummy]{combine primary double, primary}"+  
    411 "}"+  
    412 "}"+  
    413 "}";  
    414 renderer.material=new Material(shaderText);  
    415 renderer.material.color=color;  
    416 }  
    417   
    418    
    419   
    420 获取一个命名的颜色值。  
    421 数多shader使用超过一个颜色,使用GetColor来获取propertyName颜色。  
    422 Unity内置着色器使用的普通颜色名称;  
    423 "_Color"为材质的主颜色。这也能够通过color属性访问。  
    424 "_SpecColor"为材质的反射颜色(在specular/glossy/vertexlit着色器中使用)。  
    425 "_Emission"为材质的散射颜色(用在reflective着色器中使用)。  
    426 print(renderder.material.GetColor("_SpecColor));  
    427   
    428    
    429   
    430    
    431   
    432 获取一个命名纹理。  
    433 数多shader使用超过一个纹理。使用GetTexture来获取propertyName纹理。  
    434 Unity内置着色器使用的普通纹理名称;  
    435 "_MainTex"为主散射纹理. 这也能够通过mainTexture属性访问。  
    436 "_BumpMap"为法线贴图。  
    437 "_LightMap"为光照贴图。  
    438    
    439 "_Cube"为发射立方体贴图。  
    440 function Start()  
    441   
    442 {  
    443    var tex=renderer.material.GetTexture("_BumpMap");  
    444    if(tex)  
    445         print("My bumpmap is "+ tex.name);  
    446    else  
    447         print("I have no bumpmap!");  
    448 }  
    449   
    450 function GetTextureOffset(propertyName: string): Vector2  
    451   
    452 function GetTextureScale(propertyName: string): Vector2  
    453   
    454    
    455   
    456 Mathf.Lerp 插值  
    457 当t = 0返回from,当t = 1 返回to。当t = 0.5 返回from和to的平均值。  
    458 // 在一秒内从minimum渐变到maximum  
    459   
    460 var minimum = 10.0;  
    461 var maximum = 20.0;  
    462   
    463 function Update () {  
    464     transform.position = Vector3(Mathf.Lerp(minimum, maximum, Time.time), 0, 0);  
    465 }  
    466   
    467 //像弹簧一样跟随目标物体  
    468 var target : Transform;  
    469 var smooth = 5.0;  
    470 function Update () {  
    471     transform.position = Vector3.Lerp (  
    472     transform.position, target.position,  
    473     Time.deltaTime * smooth);  
    474 }  
    475   
    476 //混合两个材质  
    477 var material1: Material;  
    478 var material2: Material;  
    479 var duration=2.0;  
    480 function Start()  
    481 {  
    482     //首先使用第一个材质  
    483     renderer.material=material[];  
    484 }  
    485 function Update()  
    486 {  
    487     //随着时间来回变化材质  
    488     var lerp=Mathf.PingPong(Time.time, duration)/duration;  
    489     renderer.material.Lerp(material1, materail2, lerp);  
    490 }  
    491   
    492   
    493 设置一个命名的颜色值。  
    494 数多shader使用超过一个颜色。使用SetColor来获取propertyName颜色.  
    495 Unity内置着色器使用的普通颜色名称;  
    496 "_Color"为材质的主颜色. 这也能够通过color属性访问.  
    497 "_SpecColor"为材质的反射颜色(在specular/glossy/vertexlit着色器中使用).  
    498 "_Emission"为材质的散射颜色(用在vertexlit着色器中).  
    499 "_ReflectColor"为材质的反射颜色(用在reflective着色器中).  
    500 function Start()  
    501   
    502 {  
    503     //设置Glossy着色器这样可以使用反射颜色  
    504     renderer.material.shader=Shader.Find("Glossy");  
    505     //设置红色的高光  
    506     renderer.material.SetColor("_SpecColor", Color.red);  
    507 }  
    508   
    509    
    510   
    511    
    512   
    513 SetFloat(propertyName: string, value: float): void  
    514   
    515    
    516   
    517   
    518 描述:设置一个命名的浮点值。  
    519 function Start()  
    520   
    521    
    522   
    523 {  
    524      //在这个材质上使用Glossy着色器  
    525      renderer.material.shader=Shader.Find("Glossy");  
    526 }  
    527 function Update()  
    528   
    529    
    530   
    531 {  
    532      //动画Shininess值  
    533      var shininess=Mathf.PingPong(Time.time, 1.0);  
    534      renderer.material.SetFloat("_Shininess, shininess);  
    535 }  
    536   
    537    
    538   
    539 Mathf.PingPong 乒乓  
    540 function Update () {  
    541     // Set the x position to loop between 0 and 3  
    542     //设置x位置循环在0和3之间  
    543     transform.position = Vector3(  
    544     Mathf.PingPong(Time.time, 3), transform.position.y, transform.position.z);  
    545 }   
    546   
    547   
    548   
    549 //如果当前变换z轴接近目标小于5度的时候,打印"close"  
    550 var target : Transform;  
    551 function Update () {  
    552     var targetDir = target.position - transform.position;  
    553     var forward = transform.forward;  
    554     var angle = Vector3.Angle(targetDir, forward);  
    555     if (angle < 5.0)  
    556         print("close");  
    557 }  
    558   
    559   
    560   
    561 Vector3.ClampMagnitude 限制长度  
    562 返回向量的长度,最大不超过maxLength所指示的长度。  
    563   
    564 也就是说,钳制向量长度到一个特定的长度。  
    565   
    566 var abc : Vector3;  
    567   
    568 function Start ()  
    569 {  
    570     abc=Vector3(0,10,0);  
    571     abc=Vector3.ClampMagnitude(abc, 2);  
    572     //abc返回的是Vector3(0,2,0)  
    573     abc=Vector3.ClampMagnitude(abc, 12);  
    574     //abc返回的是Vector3(0,10,0)  
    575  }  
    576   
    577 Vector3.Dot 点乘  
    578 对于normalized向量,如果他们指向在完全相同的方向,Dot返回1。如果他们指向完全相反的方向,返回-1。对于其他的情况返回一个数(例如:如果是垂直的Dot返回0)。对于任意长度的向量,Dot返回值是相同的:当向量之间的角度减小,它们得到更大的值。  
    579 // detects if other transform is behind this object  
    580 //检测其他变换是否在这个物体的后面  
    581   
    582 var other : Transform;  
    583 function Update() {  
    584     if (other) {  
    585         var forward = transform.TransformDirection(Vector3.forward);  
    586         var toOther = other.position - transform.position;  
    587         if (Vector3.Dot(forward,toOther) < 0)  
    588             print ("The other transform is behind me!");  
    589     }  
    590 }  
    591   
    592 Vector3.forward 向前  
    593 写Vector3(0, 0, 1)的简码,也就是向z轴。  
    594 transform.position += Vector3.forward * Time.deltaTime;  
    595   
    596   
    597 Vector3.magnitude 长度  
    598 向量的长度是(x*x+y*y+z*z)的平方根。  
    599   
    600 Vector3.Max 最大  
    601 返回一个由两个向量的最大组件组成的向量  
    602 var a : Vector3 = Vector3(1, 2, 3);  
    603 var b : Vector3 = Vector3(4, 3, 2);  
    604 print (Vector3.Max(a,b));   
    605 // prints (4.0,3.0,3.0)  
    606   
    607   
    608 Vector3.one  
    609 Vector3(1, 1, 1)的简码。  
    610 transform.position = Vector3.one;  
    611   
    612   
    613 Vector3.operator * 运算符  
    614 // make the vector twice longer: prints (2.0,4.0,6.0)  
    615 //使该向量变长2倍  
    616 print (Vector3(1,2,3) * 2.0);  
    617   
    618   
    619 Vector3.operator +  
    620 // prints (5.0,7.0,9.0)  
    621 print (Vector3(1,2,3) + Vector3(4,5,6));  
    622   
    623   
    624 static function Project (vector : Vector3, onNormal : Vector3) : Vector3  
    625 投射一个向量到另一个。  
    626 返回一个向量,这个向量由vector投射到onNormal。 返回0如果onNormal几乎等于或等于0;  
    627 即vector垂直投射到onNormal与原点连线的线上的点  
    628   
    629 Transform就是U3D所封装的矩阵运算,所实现的功能不过就是物体矩阵的运算罢了  
    630   
    631   
    632    
    633   
    634 SimplePath 提供任何类型的高级寻路功能。  
    635   
    636 包含寻路、转向、路径平滑、动态障碍物避免、地形编辑。  
    637 用户手册查看地址:http://www.alexkring.com/SimplePath/SimplePath.pdf  
    638 API:http://www.alexkring.com/SimplePath/Doxygen/html/index.html  
    639 Demo Video:http://www.youtube.com/watch?v=sTb59eKp6qM  
    640 500 Agents Pathfinding + Dynamic Obstacle Avoidance:http://youtu.be/8ZNaNdOFXRw  
    641   
    642 //加载test下所有资源  
    643 function Start ()   
    644 {  
    645 //需将textres转为Texture2D[]  
    646 var textures:Object[] = Resources.LoadAll("_texture/test");  
    647 Debug.Log("textures.Length: " + textures.Length);  
    648 }  
    649   
    650    
    651   
    652 //基于时间滚动主纹理  
    653 var scrollSpeed=0.5;  
    654 function Update()  
    655   
    656 {  
    657      var offset=Time.time*scrollspeed;  
    658      renderer.material.mainTextureOffset=Vector2(offset,0);  
    659 }  
    660   
    661 参见:SetTextureOffset.GetTextureOffset.
  • 相关阅读:
    【leetcode】Reverse Nodes in k-Group (hard)☆
    JSP简单练习-包装类综合应用实例
    C++ 学习笔记3,struct长度測试,struct存储时的对齐方式
    rsh 无秘钥登陆配置
    【POJ 3122】 Pie (二分+贪心)
    Boss OpenCart 商城自适应主题模板 ABC-0012-01
    理解C语言中指针的声明以及复杂声明的语法
    JQuery编程demo练习
    Growth: 一个关于怎样成为优秀Web Developer 的 App
    改动select默认样式,兼容IE9
  • 原文地址:https://www.cnblogs.com/ChenZiRong1999/p/12907007.html
Copyright © 2020-2023  润新知