Unityの組み込み関数を使用せずにオブジェクトの周りを回転するにはどうすればよいですか?

FaTaLL

矢印キーを使用して1x1パイプの周りで立方体を回転させたい。(左右)。

問題は、トランスフォームの位置と場所を直接設定する組み込み関数を使用できないことです。(transform.lookAt、transform.Rotate、transform.RotateAroundなど)。回転させたい変換の値を変更する前に、複数のものの回転のオイラーと位置のベクトル値が必要なためです。

私はさまざまなテクニックを試しましたが、今のところ運がありません。

回転にsin-cosを使用してみましたが、回転と位置の両方で機能させる方法がわかりませんでした。

 _timer += Time.deltaTime * _larvaSpeed;
 float x = -Mathf.Cos(_timer) * distanceBetweenCenter;
 float y = Mathf.Sin(_timer) * distanceBetweenCenter;

これが私が達成したいことです。右または左を押して、パイプの周りでオブジェクトを移動および回転させます。

やりたいこと

私が望む結果。(右矢印キーを少し押した場合)。

最終結果

助けていただければ幸いです。ありがとうございました!

モハメド・アワド

これが円数学を使用した解決策であり、使用しないことを強くお勧めします。@ FaTaLLがコメントで尋ねているように、円方程式を使用して円運動を理解するだけです。

円方程式...(x1-x2)^ 2 +(y1-y2)^ 2 = r ^ 2

x1、y1は立方体の位置です

x2、y2はパイプの位置です

rは立方体とパイプの間の距離です。

using UnityEngine;

public class Rotating : MonoBehaviour
{
    public GameObject pipe;
    public float Delta;
    Vector3 nextpos;
    bool compareY;
    bool next;
    int switchx;
    float storeVarAxis;
    float x, y, r;
    private void Start()
    {
        next = true;
        switchx = 1;
        compareY = true;
        x = transform.position.x - pipe.transform.position.x;
        y = transform.position.y - pipe.transform.position.y;
        storeVarAxis = y;
        r = Mathf.Sqrt(x * x + y * y);
    }
    private void Update()
    {
        if (next)
        {
            if (compareY == true)
            {
                y -= Delta * Time.deltaTime;
                if (y <= -storeVarAxis)
                {
                    y = -storeVarAxis;
                    compareY = false;
                    switchx = -1;
                }
            }
            else
            {
                y += Delta * Time.deltaTime;
                if (y >= storeVarAxis)
                {
                    y = storeVarAxis;
                    compareY = true;
                    switchx = 1;
                }
            }
            float v = r * r - y * y;
            x = Mathf.Sqrt(Mathf.Abs(v));
            nextpos = new Vector3(pipe.transform.position.x + x * switchx, pipe.transform.position.y + y, transform.position.z);
            next = false;
        }
        transform.position = Vector3.MoveTowards(transform.position, nextpos, 1f * Time.deltaTime);
        if(Vector3.Distance(transform.position, nextpos) < .05) transform.position = nextpos;
        if (transform.position.x.Equals(nextpos.x) && transform.position.y.Equals(nextpos.y)) next = true;
    }
}

まあ、推奨される方法は、この単純なスクリプトを使用することです

using UnityEngine;

public class Rotating : MonoBehaviour
{
    public float speed;
    public GameObject pipe;
    float r, angle;
    Vector3 startpos;
    private void Start()
    {
        r = Mathf.Abs(transform.position.y - pipe.transform.position.y);
        angle = 0;
        transform.position = pipe.transform.position;
        startpos = transform.position;
    }
    void Update()
    {
        angle = angle + speed * Time.deltaTime;
        transform.rotation = Quaternion.EulerAngles(0,0, angle);
        transform.position = startpos + (transform.rotation * new Vector3(r, 0, 0));
    }
}

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

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

編集
0

コメントを追加

0

関連記事

分類Dev

Unityの組み込み関数を使用せずにオブジェクトの周りを回転するにはどうすればよいですか?

分類Dev

重複せず、組み込み関数を使用せずに、JAVAの配列をマージするにはどうすればよいですか?

分類Dev

javascriptの組み込みオブジェクトにオブジェクトを追加するにはどうすればよいですか?

分類Dev

RealityKitで1つの軸のみを中心にオブジェクトを回転させるにはどうすればよいですか?

分類Dev

組み込み関数を使用せずに、LinkedListクラスの次のポインターを取得するにはどうすればよいですか?

分類Dev

Pandasオブジェクトの列を組み合わせるにはどうすればよいですか?

分類Dev

OrbitControlsでオブジェクトの周りに完全な垂直回転を実装するにはどうすればよいですか?

分類Dev

Unity3dプロジェクトで組み込みのcgincシェーダーを使用するにはどうすればよいですか?

分類Dev

組み込み関数を使用せずにMATLABで画像を反転するにはどうすればよいですか?

分類Dev

C#の組み込み関数Rankを使用せずに配列の次元を取得するにはどうすればよいですか?

分類Dev

MATLABに組み込みの関数やループを使用せずに共分散行列を計算するにはどうすればよいですか?

分類Dev

組み込みのStringオブジェクトにgetterメソッドを追加するにはどうすればよいですか?

分類Dev

MATLABの組み込み関数を使用せずに10分割交差検定を実行するにはどうすればよいですか?

分類Dev

グラフィックオブジェクトの場所を変更せずに回転させるにはどうすればよいですか?

分類Dev

Javascriptの組み込み関数を使用せずにフィルタリングするにはどうすればよいですか?

分類Dev

jqueryを使用せずに、純粋なJavaScriptでオブジェクトの関数を使用するにはどうすればよいですか?

分類Dev

組み込み関数を使用せず、ループを使用せずに転置のような行列を生成するにはどうすればよいですか?

分類Dev

組み込みSQL関数の結果を1つのクエリで2回使用するにはどうすればよいですか?

分類Dev

組み込みのsysモジュールを変更せずにスクリプトを実行するにはどうすればよいですか?

分類Dev

javascriptオブジェクトを組み合わせるにはどうすればよいですか?

分類Dev

このオブジェクトのキー/値のすべての組み合わせをJavaScriptで作成するにはどうすればよいですか?

分類Dev

2つのオブジェクトを組み合わせて、その中の配列をマージするにはどうすればよいですか?

分類Dev

Makefileからシェル組み込み関数を使用するにはどうすればよいですか?

分類Dev

glm :: rotateを使用して原点以外の点を中心にオブジェクトを回転させるにはどうすればよいですか?

分類Dev

1つのクラスの2つのオブジェクトを追加し、組み合わせて出力するにはどうすればよいですか?

分類Dev

シーンでアクティブなオブジェクトにのみAIを移動させるにはどうすればよいですか(Unity Engine)

分類Dev

MongoDBの埋め込み配列オブジェクト内にjsonオブジェクトを挿入するにはどうすればよいですか?

分類Dev

v-forとv-modelを組み合わせてオブジェクトのリストを編集するにはどうすればよいですか?

分類Dev

Unity 3Dの頂点にオブジェクトの回転、スケール、平行移動を追加するにはどうすればよいですか?

Related 関連記事

  1. 1

    Unityの組み込み関数を使用せずにオブジェクトの周りを回転するにはどうすればよいですか?

  2. 2

    重複せず、組み込み関数を使用せずに、JAVAの配列をマージするにはどうすればよいですか?

  3. 3

    javascriptの組み込みオブジェクトにオブジェクトを追加するにはどうすればよいですか?

  4. 4

    RealityKitで1つの軸のみを中心にオブジェクトを回転させるにはどうすればよいですか?

  5. 5

    組み込み関数を使用せずに、LinkedListクラスの次のポインターを取得するにはどうすればよいですか?

  6. 6

    Pandasオブジェクトの列を組み合わせるにはどうすればよいですか?

  7. 7

    OrbitControlsでオブジェクトの周りに完全な垂直回転を実装するにはどうすればよいですか?

  8. 8

    Unity3dプロジェクトで組み込みのcgincシェーダーを使用するにはどうすればよいですか?

  9. 9

    組み込み関数を使用せずにMATLABで画像を反転するにはどうすればよいですか?

  10. 10

    C#の組み込み関数Rankを使用せずに配列の次元を取得するにはどうすればよいですか?

  11. 11

    MATLABに組み込みの関数やループを使用せずに共分散行列を計算するにはどうすればよいですか?

  12. 12

    組み込みのStringオブジェクトにgetterメソッドを追加するにはどうすればよいですか?

  13. 13

    MATLABの組み込み関数を使用せずに10分割交差検定を実行するにはどうすればよいですか?

  14. 14

    グラフィックオブジェクトの場所を変更せずに回転させるにはどうすればよいですか?

  15. 15

    Javascriptの組み込み関数を使用せずにフィルタリングするにはどうすればよいですか?

  16. 16

    jqueryを使用せずに、純粋なJavaScriptでオブジェクトの関数を使用するにはどうすればよいですか?

  17. 17

    組み込み関数を使用せず、ループを使用せずに転置のような行列を生成するにはどうすればよいですか?

  18. 18

    組み込みSQL関数の結果を1つのクエリで2回使用するにはどうすればよいですか?

  19. 19

    組み込みのsysモジュールを変更せずにスクリプトを実行するにはどうすればよいですか?

  20. 20

    javascriptオブジェクトを組み合わせるにはどうすればよいですか?

  21. 21

    このオブジェクトのキー/値のすべての組み合わせをJavaScriptで作成するにはどうすればよいですか?

  22. 22

    2つのオブジェクトを組み合わせて、その中の配列をマージするにはどうすればよいですか?

  23. 23

    Makefileからシェル組み込み関数を使用するにはどうすればよいですか?

  24. 24

    glm :: rotateを使用して原点以外の点を中心にオブジェクトを回転させるにはどうすればよいですか?

  25. 25

    1つのクラスの2つのオブジェクトを追加し、組み合わせて出力するにはどうすればよいですか?

  26. 26

    シーンでアクティブなオブジェクトにのみAIを移動させるにはどうすればよいですか(Unity Engine)

  27. 27

    MongoDBの埋め込み配列オブジェクト内にjsonオブジェクトを挿入するにはどうすればよいですか?

  28. 28

    v-forとv-modelを組み合わせてオブジェクトのリストを編集するにはどうすればよいですか?

  29. 29

    Unity 3Dの頂点にオブジェクトの回転、スケール、平行移動を追加するにはどうすればよいですか?

ホットタグ

アーカイブ