ここで少しベクトル加算と減算、乗算、除算の原則についての導入が、ベクター上の優れたメソッドとプロパティにUnity3dを導入するには、これらのメソッドとプロパティを使用すると、我々はベクトルの外積の計算ポイントの減算、乗算、除算を得ることができること。
図1に示すように、ベクトルの大きさは、二つの方法がユニティに示されています。
- プロパティの大きさで、ベクトルの大きさを求めます。
- Vector3.Magnitude法により、ベクトルの大きさを取得します。
Vector3 a = new Vector3(3, 4, 5);
float b = Vector3.Magnitude(a);
float c = a.magnitude;
print("获取长度的两种方法:" + b + "::::" + c);
図2に示すように、距離のVector3方法は、得られた2つのベクトル間の距離をフロート式を返します。
Vector3 a = new Vector3(3, 4, 5);
Vector3 b = new Vector3(5, 6, 7);
float c = Vector3.Distance(a, b);
print(c);
図3に示すように、ベクトルの加算減算は、もちろん、するVector3ベクトルを得ることがあります。
Vector3 v1 = new Vector3(2, 3, 4);
Vector3 v2 = new Vector3(3, 4, 9);
Vector3 v3 = v1 + v2;
Vector3 v4 = v1 - v2;
print("加法" + v3);
print("减法" + v4);
4、ベクトルデジタルデバイドを乗じ
Vector3 v5 = v1 * 0.1f;
print("乘以数字" + v5);
Vector3 v6 = v2 / 10;
print("除以数字" + v6);
図5に示すように、正規化ベクトル(ベクトルスイッチ部ベクトル(同じ方向で、長さとなる1))、Unityおよび方法与えられた正規化された属性ノーマライズ
同じと差と:
- 正規化、正規化ベクトルが正規化されています。
- 正規化された属性は、元のベクトルを変更しない正規化ベクトルを得ます。
- 2つの方法でノーマライズ:最初の使用Vector3.Normalize(C); Cベクトルは、正規化ベクトルを返し、変更されない。第2の使用e.Normalize();ベクターとEは、直接メソッドを呼び出し、これは、eは、正規化ベクトルになりそうという、ベクトルeを変更します
Vector3 a = new Vector3(3, 4, 8);
Vector3 b = a.normalized;
print(b);
print(b.magnitude);
Vector3 c = new Vector3(5, 7, 9);
Vector3 d = Vector3.Normalize(c);
print(c);
print(d);
Vector3 e = new Vector3(8, 9, 5);
e.Normalize();
print(e);
6、ベクトル外積クロスするVector3方法はするVector3ベクトルを返します。C | | = | || B |得られる実際の数学のクロス製品は数あるで罪<A、B>、私たちは、この分析は、クロス乗算団結a.normalized金型を使用して取得することができる属性長いです。
//两个向量叉乘
Vector3 a = new Vector3(3, 5, 7);
Vector3 b = new Vector3(5, 8, 2);
Vector3 c = Vector3.Cross(a, b);
print(c.magnitude);
float angle1 = Mathf.Asin(Vector3.Cross(a.normalized, b.normalized).magnitude) * Mathf.Rad2Deg;
float angle2 = Mathf.Asin(Vector3.Distance(Vector3.zero, Vector3.Cross(a.normalized, b.normalized))) * Mathf.Rad2Deg;
print(angle1);
print(angle2);
図7は、点在しています。| C | = | || B | COS <A、B>。floatを返します。
Vector3 a = new Vector3(8, 9, 10);
Vector3 b = new Vector3(2, 4, 6);
float c = Vector3.Dot(a, b);
print(c);
float angle = Mathf.Acos(Vector3.Dot(a.normalized, b.normalized)) * Mathf.Rad2Deg;
print(angle);
8、Lerp方法。中間点の点Aから点Bへ戻さ。アプリケーションは穏やか動きやカメラに従います。
- Vector3.Lerp(A、B、0)の位置に戻ります
- Vector3.Lerp(A、B、1)が位置Bに戻されます。
- Vector3.Lerp(A、B、0.5)、Bの中間位置を戻します。
私は、印刷の値Vector3.Lerp
Vector3 a = new Vector3(3, 4, 5);
Vector3 b = new Vector3(6, 7, 8);
Vector3 c = Vector3.Lerp(a, b, 0);
print("0:::返回的是 a" + c);
Vector3 d = Vector3.Lerp(a, b, 1);
print("1::: 放回的 b" + d);
Vector3 e = Vector3.Lerp(a, b, 0.5f);
print("0.5::::返回的是a、b 中间的位置" + e);
II、シーン内で移動、キューブはShpereに移動しました
GameObject Cube;
GameObject Sphere;
// Use this for initialization
void Start () {
Cube = GameObject.Find("Cube");
Sphere = GameObject.Find("Sphere");
}
// Update is called once per frame
void Update () {
transform.position = Vector3.Lerp(Cube.transform.position,Sphere.transform.position,Time.deltaTime);
}