Unity中Vector3中一些常量
2022/11/29 23:29:15
关键词:Vector3 forward unity u3d
2022/11/29 23:29:15
关键词:Vector3 forward unity u3d
Vector2向量在Unity中代表一个二维方向或一个二维坐标,而Vector3向量在Unity中代表一个三维方向或一个三维坐标,在开发中transform下的position、scale、rotation等都可以通过设置Vector3的值来改变相应的位置、大小等。它本身具备一些基本常量和算法:
常量,这些常量中的2、4、6是U3d中最常用的:
1、Vector3.back=(0,0,-1)
2、Vector3.forward=(0,0,1)
3、Vector3.left=(-1,0,0)
4、Vector3.right=(1,0,0)
5、Vector3.down=(0,-1,0)
6、Vector3.up=(0,1,0)
7、Vector3.zero=(0,0,0)
8、Vector3.one=(1,1,1)
比如向着z方向前进 是世界坐标
transform.position+=(Vector3.forward/10);
巡航导弹.rigidbody.AddForce(1, ForceMode.Impulse);
//等同transform.position += new Vector3(0,0,s);及transform.Translate(0,0,s);
//等同transform.Translate(Vector3.forward * Time.deltaTime * 10);
//this.rigidbody.AddForce(new Vector3(0,0,s));//对刚体加力直到刚体碰撞
//this.rigidbody.volecity=transform.forward*1.1f;//刚体前行
//Rigidbody.velocity这个方法是瞬间给物体一个恒定的速度,将物体提升至该速度。
//Rigidbody.addForce这个方法瞬间给物体一个规定好的力
比如测定距离:
public Vector3 中间位置;
public Transform T1;
public GameObject G1;
void Start(){
d1=Vector3.Distance(transform.position,中间位置);
d2=Vector3.Distance(transform.position,T1.position);
d2=Vector3.Distance(G1.transform.position,Camera.main.transform.position);
}
自己的坐标系旋转
t.eulerAngles+= (t.forward / 10);
下面这个是世界坐标的旋转
t.Rotate(Vector3.forward * Time.deltaTime * 100, Space.World);
算法:
Vector3.Angle(a,b) :a,b两个Vector3向量之间的夹角,返回两个向量之间较小的角度(在旋转计算中常常用到)
Vector3.Cross(a,b) :a,b两个Vector3向量的叉积,返回垂直于a,b,两个向量所在平面的另一个向量,长度|c|=|a||b|sin
Vector3.Dot(a,b) :a,b两个Vector3向量的点积,a·b=|a|·|b|cos(是一个标量,只有大小,没有方向)
Vector3.Distance(a,b) :a,b两个坐标或两点之间的距离,(范围判断中使用)
Vector3.Lerp(a,b,w):a,b两个Vector3向量之间基于数字w的插值运算,一般用于平滑处理,比如摄像机的缓慢移动、导弹的追踪等
Vector3.MoveTowards(a,b,v):沿着目标移动,transform.position =Vector3.MoveTowards(transform.position, TargetPosition, speed * Time.deltaTime);
Vector3.Normalize(a):向量单位化,方向一致,大小为单位1,例如Debug.Log (Vector3.Normalize (new Vector3(6,3,2)));
Vector3.Project(a,Vector3.up)返回一个向量在指定轴上的投影:向量投影,求一个向量在另一个向量方向上的投影
Vector3.Slerp(a,b,w):a,b两个Vector3向量之间基于数字w的球形插值.
[1] [2]
相关文章(向右看)..
常量,这些常量中的2、4、6是U3d中最常用的:
1、Vector3.back=(0,0,-1)
2、Vector3.forward=(0,0,1)
3、Vector3.left=(-1,0,0)
4、Vector3.right=(1,0,0)
5、Vector3.down=(0,-1,0)
6、Vector3.up=(0,1,0)
7、Vector3.zero=(0,0,0)
8、Vector3.one=(1,1,1)
比如向着z方向前进 是世界坐标
transform.position+=(Vector3.forward/10);
巡航导弹.rigidbody.AddForce(1, ForceMode.Impulse);
//等同transform.position += new Vector3(0,0,s);及transform.Translate(0,0,s);
//等同transform.Translate(Vector3.forward * Time.deltaTime * 10);
//this.rigidbody.AddForce(new Vector3(0,0,s));//对刚体加力直到刚体碰撞
//this.rigidbody.volecity=transform.forward*1.1f;//刚体前行
//Rigidbody.velocity这个方法是瞬间给物体一个恒定的速度,将物体提升至该速度。
//Rigidbody.addForce这个方法瞬间给物体一个规定好的力
比如测定距离:
public Vector3 中间位置;
public Transform T1;
public GameObject G1;
void Start(){
d1=Vector3.Distance(transform.position,中间位置);
d2=Vector3.Distance(transform.position,T1.position);
d2=Vector3.Distance(G1.transform.position,Camera.main.transform.position);
}
自己的坐标系旋转
t.eulerAngles+= (t.forward / 10);
下面这个是世界坐标的旋转
t.Rotate(Vector3.forward * Time.deltaTime * 100, Space.World);
算法:
Vector3.Angle(a,b) :a,b两个Vector3向量之间的夹角,返回两个向量之间较小的角度(在旋转计算中常常用到)
Vector3.Cross(a,b) :a,b两个Vector3向量的叉积,返回垂直于a,b,两个向量所在平面的另一个向量,长度|c|=|a||b|sin
Vector3.Dot(a,b) :a,b两个Vector3向量的点积,a·b=|a|·|b|cos(是一个标量,只有大小,没有方向)
Vector3.Distance(a,b) :a,b两个坐标或两点之间的距离,(范围判断中使用)
Vector3.Lerp(a,b,w):a,b两个Vector3向量之间基于数字w的插值运算,一般用于平滑处理,比如摄像机的缓慢移动、导弹的追踪等
Vector3.MoveTowards(a,b,v):沿着目标移动,transform.position =Vector3.MoveTowards(transform.position, TargetPosition, speed * Time.deltaTime);
Vector3.Normalize(a):向量单位化,方向一致,大小为单位1,例如Debug.Log (Vector3.Normalize (new Vector3(6,3,2)));
Vector3.Project(a,Vector3.up)返回一个向量在指定轴上的投影:向量投影,求一个向量在另一个向量方向上的投影
Vector3.Slerp(a,b,w):a,b两个Vector3向量之间基于数字w的球形插值.
相关文章(向右看)..