ユニティ11ベクトル

ここで少しベクトル加算と減算、乗算、除算の原則についての導入が、ベクター上の優れたメソッドとプロパティに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);
	}
公開された56元の記事 ウォン称賛24 ビュー30000 +

おすすめ

転載: blog.csdn.net/u014196765/article/details/88967018