簡體   English   中英

如何只在y軸的position上放隨機速度?

[英]How to put random speed on the position of the y-axis only?

抱歉,我是 Unity 的初學者,但我只想在 Y 軸上移動一個游戲對象,並讓它以隨機速度移動,這樣有時它移動得快,有時移動得慢。

這是我的代碼。 (因為我發現我的錯誤是我將隨機速度放在更新上但我不知道如何修復它,所以它會抖動)

public class RandomUpDown : MonoBehaviour
{
     [SerializeField] float minSpeed = 1f;

     [SerializeField] float maxSpeed = 2f;
     
     [SerializeField] float height = 4f;

     Vector3 pos;

     private void Start()
     {
         pos = transform.position;
     }

     void Update()
     {
        float randomSpeed = Random.Range(minSpeed, maxSpeed);
        float newY = Mathf.Sin(Time.time * randomSpeed) * height + pos.y;  
        transform.position = new Vector3(transform.position.x, newY, transform.position.z);
     } 
} 

這真的取決於你想要什么,但你可以用協程和循環來做到這一點。

例如:

void Start()
{
    StartCoroutine(myRandLoop)
}

public IEnumerator myRandLoop()
{
    while(true)
    {
        float randomSpeed = Random.Range(minSpeed, maxSpeed);
        float newY = Mathf.Sin(Time.time * randomSpeed) * height + pos.y;  
        transform.position = new Vector3(transform.position.x, newY, transform.position.z);
        yield return new WaitForSeconds(delayAmount)
    }
}

暫無
暫無

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

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