簡體   English   中英

unity 移動旋轉物體

[英]Unity Move rotating object

我有一個圍繞 Z 軸上的 0,0,0 點旋轉的球。 當按下空格鍵時,球必須進入大圓圈內。 現在我的代碼看起來像這樣。 當你按下空間時,球不會像他們應該的那樣表現。 我想知道如何使氣球完全向下

這就是球的行為方式 ->行為圖像

我的代碼:

void Update () {
    if (Input.GetKeyDown (KeyCode.Space)) {
        transform.position = new Vector3 (transform.position.x - 1, transform.position.y - 1, 0);
    } else {
        transform.RotateAround(new Vector3(0,0,0), new Vector3(0,0,1), 2);
    }
}

您“跳躍”軌道的代碼不會執行您想要的操作,因為Transform.RotateAround修改了對象變換的旋轉和位置。 演示 RotateAround 如何修改變換

因此,每次跳轉到世界中的 (position - 1,1,0) 都會返回截然不同的結果。

你想要做的,而不是什么是計算從對象(矢量)方向的軌道()的中心,那么你想多遠它移動縮放下來到,然后將其應用到位置。

private Vector3 _orbitPos = Vector3.zero;
private float _orbitAngle = 2f;

private float _distanceToJump = 2f;

void Update()
{
    if (Input.GetKeyDown(KeyCode.Space))
    {
        var difference = (_orbitPos - transform.position).normalized * _distanceToJump;
        transform.Translate(difference);
    }

    transform.RotateAround(_orbitPos, Vector3.forward, _orbitAngle);
}

當立即按下空格鍵時,這會將要繞軌道運行的物體移近 2 個單位。

如果您想要平滑過渡而不是跳轉,請考慮使用Mathf.Lerp 、 Vector3.Lerp 和所涉及的例程。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM