unity学习3

来源:互联网 发布:火牛软件怎么用 编辑:程序博客网 时间:2024/05/17 08:06


//创建一个没有名称的游戏物体  并给他添加刚体和立方体碰撞器.Transform总是被添加到该游戏物体.  
player=new GameObject();  
player.AddComponent("Rigidbody");  
player.AddComponent("BoxCollider");  

//添加名为FoobarScript的脚本到游戏物体  
gameObject.AddComponent("FoobarScript");  

//添加球形碰撞器到游戏物体  
gameObject.AddComponent("FoobarCollider");  
移除组件,使用Object.Destroy.  
  
//不激活该游戏物体.  
gameObject.active=false;  
  
  
//附加到这个游戏物体的动画组件(只读)(如果没有为null)  
var other: GameObject;  
other.animation.Play();  
  
//附加到这个游戏物体的声音组件(只读)(如果没有为null)  
var other: GameObject;  
other.audio.Play();  
  
  
//附加到这个游戏物体的相机(只读)(如果没有为null)  
var other: GameObject;  
other.camera.fieldOfView=45;  
  
//附加到这个游戏物体的碰撞器(只读)(如果没有为null)  
var other: GameObject;  
other.collider.material.dynamicFriction=1;  
  
  
//附加到这个游戏物体的恒定力(只读)(如果没有为null)  
var other: GameObject;  
other.constantForce.relativeForce=Vector3(0,0,1);  
constantForce:持续不断的应用一个力。
relativeForce:该力相对于刚体坐标系统,在每帧中应用。

//附加到这个游戏物体的光影(只读)(如果没有为null)  
var other: GameObject;  
other.light.range=10;  
range:灯光的范围。
   
//附加到这个游戏物体的渲染器(只读)(如果没有为null)  
var other: GameObject;  
other.renderer.material.color=Color.green;  
  
//附加到这个游戏物体的刚体(只读)(如果没有为null)  
var other: GameObject;  
other.rigidbody.AddForce(1,1,1);  
  
//标签可以用来标识一个游戏物体。标签在使用前必须在标签管理器中定义。  
gameObject.tag="Player";  
  
//附加到这物体的变换.  
var other: GameObject;  
other.transform.Translate(1,1,1);  
    
//立即死亡触发器  
//销毁任何进入到触发器的碰撞器,这些碰撞器被标记为Player.  
public class example : MonoBehaviour {
               void OnTriggerEnter(Collider other) {
                                 if (other.CompareTag("Player"))
                                             Destroy(other.gameObject);
              }
}

//用几何的网格渲染器和适当的碰撞器创建一个游戏物体。  在场景中创建一个平面,球体和立方体  
 Start()  
{  
     GameObject plane:GameObject= GameObject.CreatePrimitive(PrimitiveType.Plane);  
  
     GameObject cube=GameObject.CreatePrimitive(PrimitiveType.Cube);  
     cube.transform.position=Vector3(0,0.5,0);  
  
      GameObject sphere=GameObject.CreatePrimitive(PrimitiveType.Sphere);  
     sphere.transform.position=Vector3(0,1.5,0);  
  
     GameObject capsule=GameObject.CreatePrimitive(PrimitiveType.Capsule);  
     capsule.transform.position=Vector3(2,1,0);  
  
      GameObject cylinder=GameObject.CreatePrimitive(PrimitiveType.Cylinder);  
     cylinder.transform.position=Vector3(-2,1,0);  
}  
  

  
描述:返回标记为tag的激活物体列表,如果没有发现返回null.  
标签在使用前必须在标签管理中定义。  
//在所有标记为"Respawn"的物体位置处 实例化respawnPrefab  
public class example : MonoBehaviour {
                      public GameObject respawnPrefab;
                      public GameObject[] respawns = GameObject.FindGameObjectsWithTag("Respawn");
                      public void Awake() {
                                  foreach (GameObject respawn in respawns) {
                                            Instantiate(respawnPrefab, respawn.transform.position, respawn.transform.rotation);
                                }
                   }
}  
//打印最接近的敌人的名称  ;找到最近的敌人的名称  ;找到所以标记为Enemy的游戏物体  ;遍历它们找到最近的一个  
    public class example : MonoBehaviour {
                       GameObject FindClosestEnemy() {
                                                        GameObject[] gos;
                                                        gos = GameObject.FindGameObjectsWithTag("Enemy");
                                                        GameObject closest;
                                                        float distance = Mathf.Infinity;
                                                        Vector3 position = transform.position;
                                               foreach (GameObject go in gos) {
                                                        Vector3 diff = go.transform.position - position;
                                                         float curDistance = diff.sqrMagnitude;
                                                         if (curDistance < distance) {
                                                            closest = go;
                                                            distance = curDistance;
                                                    }
                                         }
                        return closest;
                    }
                    public void Awake() {
                                print(FindClosestEnemy().name);
                  }
    }
 
在这个材质中有多少个pass(了解下)  
这个最常用在使用GL类之间绘制的代码中(只限于Unity Pro). 例如,Image Effects使用  材质来实现屏幕后期处理. 对材质中的每一个pass(参考SetPass)它们激活并绘制一个全屏  四边形。  

这里是一个全屏图形效果的例子,它反转颜色。添加这个脚本到相机并在播放模式中  查看。  
private var mat: Material;  
   function Start()  
{  
   mat=new Material(  "Shader"Hidden/Invert"  { "+ "SubShader{"+  "Pass{"+   "ZTestAlways Cull Off ZWrite Off"+  "SetTexture[_RenderTex]                                               {combine one-texture}"+ "}"+    "{"+    "}"+   );  
}  
    function OnRenderImage(source: RenderTexture, dest: RenderTexture){  
                 RenderTexture.active=dest;  
                 source.SetGlobalShaderProperty("_RenderTex");  
                 GL.PushMatrix();  
                 GL.LoadOrtho();  
                 //对于材质中的每个pass(这里只有一个)  
                for(var i=0; i<mat.passCount; ++i){  
                 //激活pass  
                 mat.SetPass(i);  
                //绘制一个四边形  
                GL.Begin(GLQUADS);  
                GL.TEXCoord2(0,0); GL.Vertex3(0,0,0.1);  
                GL.TEXCoord2(1,0); GL.Vertex3(1,0,0.1);  
                GL.TEXCoord2(1,1); GL.Vertex3(1,1,0.1);  
                GL.TEXCoord2(0,1); GL.Vertex3(0,1,0.1);  
                GL.End();  
          }  
             GL.PopMatrix();  
}  
  
Vector3.Dot 点乘  (了解下
对于normalized向量,如果他们指向在完全相同的方向,Dot返回1。如果他们指向完全相反的方向,返回-1。对于其他的情况返回一个数(例如:如果是垂直的Dot返回0)。对于任意长度的向量,Dot返回值是相同的:当向量之间的角度减小,它们得到更大的值。  
//检测其他变换是否在这个物体的后面  
  
var other : Transform;  
function Update() {  
       if (other) {  
               var forward = transform.TransformDirection(Vector3.forward);  
               var toOther = other.position - transform.position;  
               if (Vector3.Dot(forward,toOther) < 0)  
                      print ("The other transform is behind me!");  
      }  
}  
  
Vector3.forward 向前  
写Vector3(0, 0, 1)的简码,也就是向z轴。  
transform.position += Vector3.forward * Time.deltaTime;  
  
Vector3.magnitude 长度  
向量的长度是(x*x+y*y+z*z)的平方根。  
  
Vector3.Max 最大  
返回一个由两个向量的最大组件组成的向量  
var a : Vector3 = Vector3(1, 2, 3);  
var b : Vector3 = Vector3(4, 3, 2);  
print (Vector3.Max(a,b));   
// prints (4.0,3.0,3.0)  
  
Vector3.one  
Vector3(1, 1, 1)的简码。  
transform.position = Vector3.one;  

Vector3.operator * 运算符  
// make the vector twice longer: prints (2.0,4.0,6.0)  
//使该向量变长2倍  
print (Vector3(1,2,3) * 2.0);  

Vector3.operator +  运算符
// prints (5.0,7.0,9.0)  
print (Vector3(1,2,3) + Vector3(4,5,6));  
 这里有很多U3D资源U3D培训视频U3D常见问题U3D项目源码我们可以一起交流学习
  
  
//创建一个没有名称的游戏物体  并给他添加刚体和立方体碰撞器.Transform总是被添加到该游戏物体.  
player=new GameObject();  
player.AddComponent("Rigidbody");  
player.AddComponent("BoxCollider");  

//添加名为FoobarScript的脚本到游戏物体  
gameObject.AddComponent("FoobarScript");  

//添加球形碰撞器到游戏物体  
gameObject.AddComponent("FoobarCollider");  
移除组件,使用Object.Destroy.  
  
//不激活该游戏物体.  
gameObject.active=false;  
  
  
//附加到这个游戏物体的动画组件(只读)(如果没有为null)  
var other: GameObject;  
other.animation.Play();  
  
//附加到这个游戏物体的声音组件(只读)(如果没有为null)  
var other: GameObject;  
other.audio.Play();  
  
  
//附加到这个游戏物体的相机(只读)(如果没有为null)  
var other: GameObject;  
other.camera.fieldOfView=45;  
  
//附加到这个游戏物体的碰撞器(只读)(如果没有为null)  
var other: GameObject;  
other.collider.material.dynamicFriction=1;  
  
  
//附加到这个游戏物体的恒定力(只读)(如果没有为null)  
var other: GameObject;  
other.constantForce.relativeForce=Vector3(0,0,1);  
constantForce:持续不断的应用一个力。
relativeForce:该力相对于刚体坐标系统,在每帧中应用。

//附加到这个游戏物体的光影(只读)(如果没有为null)  
var other: GameObject;  
other.light.range=10;  
range:灯光的范围。
   
//附加到这个游戏物体的渲染器(只读)(如果没有为null)  
var other: GameObject;  
other.renderer.material.color=Color.green;  
  
//附加到这个游戏物体的刚体(只读)(如果没有为null)  
var other: GameObject;  
other.rigidbody.AddForce(1,1,1);  
  
//标签可以用来标识一个游戏物体。标签在使用前必须在标签管理器中定义。  
gameObject.tag="Player";  
  
//附加到这物体的变换.  
var other: GameObject;  
other.transform.Translate(1,1,1);  
    
//立即死亡触发器  
//销毁任何进入到触发器的碰撞器,这些碰撞器被标记为Player.  
public class example : MonoBehaviour {
               void OnTriggerEnter(Collider other) {
                                 if (other.CompareTag("Player"))
                                             Destroy(other.gameObject);
              }
}

//用几何的网格渲染器和适当的碰撞器创建一个游戏物体。  在场景中创建一个平面,球体和立方体  
 Start()  
{  
     GameObject plane:GameObject= GameObject.CreatePrimitive(PrimitiveType.Plane);  
  
     GameObject cube=GameObject.CreatePrimitive(PrimitiveType.Cube);  
     cube.transform.position=Vector3(0,0.5,0);  
  
      GameObject sphere=GameObject.CreatePrimitive(PrimitiveType.Sphere);  
     sphere.transform.position=Vector3(0,1.5,0);  
  
     GameObject capsule=GameObject.CreatePrimitive(PrimitiveType.Capsule);  
     capsule.transform.position=Vector3(2,1,0);  
  
      GameObject cylinder=GameObject.CreatePrimitive(PrimitiveType.Cylinder);  
     cylinder.transform.position=Vector3(-2,1,0);  
}  
  

  
描述:返回标记为tag的激活物体列表,如果没有发现返回null.  
标签在使用前必须在标签管理中定义。  
//在所有标记为"Respawn"的物体位置处 实例化respawnPrefab  
public class example : MonoBehaviour {
                      public GameObject respawnPrefab;
                      public GameObject[] respawns = GameObject.FindGameObjectsWithTag("Respawn");
                      public void Awake() {
                                  foreach (GameObject respawn in respawns) {
                                            Instantiate(respawnPrefab, respawn.transform.position, respawn.transform.rotation);
                                }
                   }
}  
//打印最接近的敌人的名称  ;找到最近的敌人的名称  ;找到所以标记为Enemy的游戏物体  ;遍历它们找到最近的一个  
    public class example : MonoBehaviour {
                       GameObject FindClosestEnemy() {
                                                        GameObject[] gos;
                                                        gos = GameObject.FindGameObjectsWithTag("Enemy");
                                                        GameObject closest;
                                                        float distance = Mathf.Infinity;
                                                        Vector3 position = transform.position;
                                               foreach (GameObject go in gos) {
                                                        Vector3 diff = go.transform.position - position;
                                                         float curDistance = diff.sqrMagnitude;
                                                         if (curDistance < distance) {
                                                            closest = go;
                                                            distance = curDistance;
                                                    }
                                         }
                        return closest;
                    }
                    public void Awake() {
                                print(FindClosestEnemy().name);
                  }
    }
 
在这个材质中有多少个pass(了解下)  
这个最常用在使用GL类之间绘制的代码中(只限于Unity Pro). 例如,Image Effects使用  材质来实现屏幕后期处理. 对材质中的每一个pass(参考SetPass)它们激活并绘制一个全屏  四边形。  

这里是一个全屏图形效果的例子,它反转颜色。添加这个脚本到相机并在播放模式中  查看。  
private var mat: Material;  
   function Start()  
{  
   mat=new Material(  "Shader"Hidden/Invert"  { "+ "SubShader{"+  "Pass{"+   "ZTestAlways Cull Off ZWrite Off"+  "SetTexture[_RenderTex]                                               {combine one-texture}"+ "}"+    "{"+    "}"+   );  
}  
    function OnRenderImage(source: RenderTexture, dest: RenderTexture){  
                 RenderTexture.active=dest;  
                 source.SetGlobalShaderProperty("_RenderTex");  
                 GL.PushMatrix();  
                 GL.LoadOrtho();  
                 //对于材质中的每个pass(这里只有一个)  
                for(var i=0; i<mat.passCount; ++i){  
                 //激活pass  
                 mat.SetPass(i);  
                //绘制一个四边形  
                GL.Begin(GLQUADS);  
                GL.TEXCoord2(0,0); GL.Vertex3(0,0,0.1);  
                GL.TEXCoord2(1,0); GL.Vertex3(1,0,0.1);  
                GL.TEXCoord2(1,1); GL.Vertex3(1,1,0.1);  
                GL.TEXCoord2(0,1); GL.Vertex3(0,1,0.1);  
                GL.End();  
          }  
             GL.PopMatrix();  
}  
  
Vector3.Dot 点乘  (了解下
对于normalized向量,如果他们指向在完全相同的方向,Dot返回1。如果他们指向完全相反的方向,返回-1。对于其他的情况返回一个数(例如:如果是垂直的Dot返回0)。对于任意长度的向量,Dot返回值是相同的:当向量之间的角度减小,它们得到更大的值。  
//检测其他变换是否在这个物体的后面  
  
var other : Transform;  
function Update() {  
       if (other) {  
               var forward = transform.TransformDirection(Vector3.forward);  
               var toOther = other.position - transform.position;  
               if (Vector3.Dot(forward,toOther) < 0)  
                      print ("The other transform is behind me!");  
      }  
}  
  
Vector3.forward 向前  
写Vector3(0, 0, 1)的简码,也就是向z轴。  
transform.position += Vector3.forward * Time.deltaTime;  
  
Vector3.magnitude 长度  
向量的长度是(x*x+y*y+z*z)的平方根。  
  
Vector3.Max 最大  
返回一个由两个向量的最大组件组成的向量  
var a : Vector3 = Vector3(1, 2, 3);  
var b : Vector3 = Vector3(4, 3, 2);  
print (Vector3.Max(a,b));   
// prints (4.0,3.0,3.0)  
  
Vector3.one  
Vector3(1, 1, 1)的简码。  
transform.position = Vector3.one;  

Vector3.operator * 运算符  
// make the vector twice longer: prints (2.0,4.0,6.0)  
//使该向量变长2倍  
print (Vector3(1,2,3) * 2.0);  

Vector3.operator +  运算符
// prints (5.0,7.0,9.0)  
print (Vector3(1,2,3) + Vector3(4,5,6));  
 这里有很多U3D资源U3D培训视频U3D常见问题U3D项目源码我们可以一起交流学习
  
  
0 0
原创粉丝点击