三角形の位置を計算して作成するにはどうすればよいですか?

ドゥビドゥボニ
private void FormationTriangle()
{
    newpositions = new List<Vector3>();
    for (int x = 0; x < squadMembers.Count; x++)
    {
        for (int y = x; y < 2 * (squadMembers.Count - x) - 1; y++)
        {
            Vector3 position = new Vector3(x, y);
            newpositions.Add(position);
        }
    }

    move = true;
    formation = Formation.Square;
}

ループが間違っています。それはsquadMembersを上下に一列に並べました。三角形にも近くありません。私はsquadMembersを三角形の形で立たせたいです。

これが可動部分です。しかし、問題は、三角形の位置を計算するループにあります。私が行った他のフォーメーションはうまく機能しています。

private void MoveToNextFormation()
{
    if (randomSpeed == false)
    {
        if (step.Length > 0)
            step[0] = moveSpeed * Time.deltaTime;
    }

    for (int i = 0; i < squadMembers.Count; i++)
    {
        squadMembers[i].transform.LookAt(newpositions[i]);
        if (randomSpeed == true)
        {
            squadMembers[i].transform.position = Vector3.MoveTowards(
                squadMembers[i].transform.position, newpositions[i], step[i]);
        }
        else
        {
            squadMembers[i].transform.position = Vector3.MoveTowards(
                squadMembers[i].transform.position, newpositions[i], step[0]);
        }
        if (Vector3.Distance(squadMembers[i].transform.position, newpositions[i]) < 
            threshold)
        {
            if (squareFormation == true)
            {
                Vector3 degrees = new Vector3(0, 0, 0);
                Quaternion quaternion = Quaternion.Euler(degrees);
                squadMembers[i].transform.rotation = Quaternion.Slerp(
                    squadMembers[i].transform.rotation, quaternion, 
                    rotateSpeed * Time.deltaTime);
            }
            else
            {
                squadMembers[i].transform.rotation = Quaternion.Slerp(
                    squadMembers[i].transform.rotation, quaternions[i], 
                    rotateSpeed * Time.deltaTime);
            }
        }
    }
}
ルジーム

この答えは、次のように配置された三角形を生成します。

    x
   x x
  x x x
 x x x x
x x x x x 

または、完全な三角形を埋めるのに十分でない場合:

    x
   x x
  x x x
 x x x x
x   x   x 

完全な三角形のユニット数は保証されていないため、三角形の大きさを過大評価し、配置したユニットの数を数え続け、制限に達したら配置を中止する必要があります。

まず、ユニット数よりも大きい最小の三角数の高さと、その三角数自体を見つけます

int height = Mathf.CeilToInt( (Mathf.Sqrt(8*squadMembers.Count+1f)-1f)/2 ) 
int slots = (int)(height * (height+1f)/2f)

次に、最初のユニットの位置を見つけます。スロットの行数とスロットの一番下の行の幅を知る必要があります。

float verticalModifier = 0.8f;  // 0.8f to decrease vertical space
float horizontalModifier = 1.25f; // 1.25f to increase horizontal space

float width = 0.5f * (height-1f);
Vector3 startPos = new Vector3(width* horizontalModifier, 0f, (float)(height-1f) * verticalModifier);

次に、十分に追加するまで追加します

int finalRowCount = height - slots + squadMembers.Count;
for (int rowNum = 0 ; rowNum < height && newpositions.Count < squadMembers.Count; rowNum++) {
    for (int i = 0 ; i < rowNum+1 && newpositions.Count < squadMembers.Count ; i++ ) {
        float xOffset = 0f;

        if (rowNum+1 == height) {
            // If we're in the last row, stretch it ...
            if (finalRowCount !=1) {
                // Unless there's only one item in the last row. 
                // If that's the case, leave it centered.

                xOffset = Mathf.Lerp(
                        rowNum/2f,
                        -rowNum/2f,
                        i/(finalRowCount-1f)
                        ) * horizontalModifier;
            }
        }
        else {
            xOffset = (i-rowNum /2f) * horizontalModifier; 
        }

        float yOffset = (float)rowNum * verticalModifier; 

        Vector3 position = new Vector3(
                startPos.x + xOffset, 0f, startPos.y - yOffset);
        newpositions.Add(position);

    }
}

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

正三角形の座標を計算するにはどうすればよいですか?

分類Dev

正三角形の座標を計算するにはどうすればよいですか?

分類Dev

JavaFXを使用して三角形を作成するにはどうすればよいですか?

分類Dev

Javascript Mathライブラリを使用して直角三角形の角度を計算するにはどうすればよいですか?

分類Dev

三角形の内側に境界線を作成するにはどうすればよいですか?

分類Dev

下部に全幅の三角形を作成するにはどうすればよいですか?

分類Dev

三角形のQWidgetを作成するにはどうすればよいですか?

分類Dev

pygameで三角形の中点を見つけて、それを繰り返し実行してシェルピンスキーの三角形を作成するにはどうすればよいですか?

分類Dev

三角形のサイズを小さくして位置を変更するにはどうすればよいですか?

分類Dev

SQLのストアドプロシージャを使用して星の三角形を作成するにはどうすればよいですか?

分類Dev

cssのみを使用して三角形のdivを作成するにはどうすればよいですか?

分類Dev

三角形の面を持つメッシュの図心を計算するにはどうすればよいですか?

分類Dev

html、svgを使用してクリック可能な三角形のグリッドを作成するにはどうすればよいですか?

分類Dev

6つの三角形のSCNNodeで六角形を作成するにはどうすればよいですか?

分類Dev

6つの三角形のSCNNodeで六角形を作成するにはどうすればよいですか?

分類Dev

6つの三角形のSCNNodeで六角形を作成するにはどうすればよいですか?

分類Dev

6つの三角形のSCNNodeで六角形を作成するにはどうすればよいですか?

分類Dev

右の境界線としてレスポンシブ三角形を作成するにはどうすればよいですか?

分類Dev

配列を特定の三角形に印刷するにはどうすればよいですか?

分類Dev

下の三角形だけをggpairsで表示するにはどうすればよいですか?

分類Dev

2の累乗を三角形で印刷するにはどうすればよいですか?

分類Dev

三角形の配列を外に出して使用できるようにするにはどうすればよいですか

分類Dev

forループを使用してJavaで後方三角形を作成するにはどうすればよいですか?

分類Dev

def関数なしでアスタリスク付きの直角三角形を作成するにはどうすればよいですか?

分類Dev

このコードに追加して、arduinoで完全な三角形を印刷するにはどうすればよいですか?

分類Dev

高さの違いを考慮して、2つの類似した直角三角形の底辺の長さの比率を計算するにはどうすればよいですか?

分類Dev

外部ライブラリなしでPythonを使用して三角形の外心円を見つけるにはどうすればよいですか?

分類Dev

PL / SQLを使用して星の三角形を印刷するにはどうすればよいですか。

分類Dev

線形勾配から必要なサイズの三角形を作成するにはどうすればよいですか?

Related 関連記事

  1. 1

    正三角形の座標を計算するにはどうすればよいですか?

  2. 2

    正三角形の座標を計算するにはどうすればよいですか?

  3. 3

    JavaFXを使用して三角形を作成するにはどうすればよいですか?

  4. 4

    Javascript Mathライブラリを使用して直角三角形の角度を計算するにはどうすればよいですか?

  5. 5

    三角形の内側に境界線を作成するにはどうすればよいですか?

  6. 6

    下部に全幅の三角形を作成するにはどうすればよいですか?

  7. 7

    三角形のQWidgetを作成するにはどうすればよいですか?

  8. 8

    pygameで三角形の中点を見つけて、それを繰り返し実行してシェルピンスキーの三角形を作成するにはどうすればよいですか?

  9. 9

    三角形のサイズを小さくして位置を変更するにはどうすればよいですか?

  10. 10

    SQLのストアドプロシージャを使用して星の三角形を作成するにはどうすればよいですか?

  11. 11

    cssのみを使用して三角形のdivを作成するにはどうすればよいですか?

  12. 12

    三角形の面を持つメッシュの図心を計算するにはどうすればよいですか?

  13. 13

    html、svgを使用してクリック可能な三角形のグリッドを作成するにはどうすればよいですか?

  14. 14

    6つの三角形のSCNNodeで六角形を作成するにはどうすればよいですか?

  15. 15

    6つの三角形のSCNNodeで六角形を作成するにはどうすればよいですか?

  16. 16

    6つの三角形のSCNNodeで六角形を作成するにはどうすればよいですか?

  17. 17

    6つの三角形のSCNNodeで六角形を作成するにはどうすればよいですか?

  18. 18

    右の境界線としてレスポンシブ三角形を作成するにはどうすればよいですか?

  19. 19

    配列を特定の三角形に印刷するにはどうすればよいですか?

  20. 20

    下の三角形だけをggpairsで表示するにはどうすればよいですか?

  21. 21

    2の累乗を三角形で印刷するにはどうすればよいですか?

  22. 22

    三角形の配列を外に出して使用できるようにするにはどうすればよいですか

  23. 23

    forループを使用してJavaで後方三角形を作成するにはどうすればよいですか?

  24. 24

    def関数なしでアスタリスク付きの直角三角形を作成するにはどうすればよいですか?

  25. 25

    このコードに追加して、arduinoで完全な三角形を印刷するにはどうすればよいですか?

  26. 26

    高さの違いを考慮して、2つの類似した直角三角形の底辺の長さの比率を計算するにはどうすればよいですか?

  27. 27

    外部ライブラリなしでPythonを使用して三角形の外心円を見つけるにはどうすればよいですか?

  28. 28

    PL / SQLを使用して星の三角形を印刷するにはどうすればよいですか。

  29. 29

    線形勾配から必要なサイズの三角形を作成するにはどうすればよいですか?

ホットタグ

アーカイブ