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项目源码我们可以一起交流学习
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
- unity 3D学习
- unity学习3
- unity 3D 学习
- unity学习笔记3
- unity学习笔记3
- unity 2.0 interception 学习3
- Unity 3D 学习笔记
- Unity 3D 学习笔记
- Unity 3D 学习笔记
- Unity 3D 学习笔记
- Unity 3D 学习笔记
- Unity 3D学习笔记
- Unity 3D学习习题
- Unity 3d 学习笔记
- Unity学习
- unity学习
- Unity学习
- unity学习
- unity学习2
- 「更快!更爽!」吹水新闻2.0
- 统计一个给定字符串中指定的字符出现的次数
- JS(javascript)动态判断输入文本框剩余可输入字符数
- 写在2015年的年初
- unity学习3
- Shell总结
- Java_语法基础_十进制转换为其它进制
- linux shell下除了某个文件外的其他文件全部删除的命令
- Var关键子
- 回首逝去的2014
- STL源码—priority_queue(TT)
- shell浅谈之调试及主题
- shell变量替换:=、=、:-、-、:?、?、:+、+句法