gpt4 book ai didi

c# - 统一,C# |我如何在方法之间有等待时间?

转载 作者:行者123 更新时间:2023-11-30 20:46:25 25 4
gpt4 key购买 nike

我的目标:让我的蜗牛看起来像是在自行移动。 示例:向右走几秒钟,向左走几秒钟,在一个地方停留几秒钟。

当前状态:当我尝试使用 WaitForSeconds 时,Snail 停在一个地方

没有 WaitForSeconds,我的蜗牛成功地来回改变方向(除了速度非常快)

我昨天才开始学习 Unity 和 C#。任何提示/建议都会有很大帮助,即使它不是我最初的问题。如果还有什么我可以帮助你帮助我的,请告诉我! :)

using UnityEngine;
using System.Collections;

public class SnailMove : MonoBehaviour {
void Start()
{

}
// Use this for initialization
void Update ()
{
Waiting();
}

// Update is called once per frame
void Movement ()
{

int direct = Random.Range(-1, 2);
if (direct == 1)
{
transform.Translate(Vector3.left * 1f * Time.deltaTime);
transform.eulerAngles = new Vector2(0,180);
}
if (direct == -1)
{
transform.Translate(Vector3.left * 1f * Time.deltaTime);
transform.eulerAngles = new Vector2(0,0);
}
}
IEnumerator Waiting()
{
Movement ();
yield return new WaitForSeconds (5);
}
}

最佳答案

协程需要以StartCoroutine开始.根据您的描述,听起来您想要这样的东西:

using UnityEngine;
using System.Collections;

public class SnailMove : MonoBehaviour
{
public float speed = 1f;
int direction = 0;
void Start()
{
StartCoroutine(ChangeDirection());
}

void Update ()
{
if (direction == 1)
{
transform.Translate(Vector3.left * speed * Time.deltaTime);
transform.eulerAngles = new Vector2(0,180);
}
else if (direction == -1)
{
transform.Translate(Vector3.left * speed * Time.deltaTime);
transform.eulerAngles = new Vector2(0,0);
}
}

IEnumerator ChangeDirection()
{
while(true)
{
yield return new WaitForSeconds (5);
direction = Random.Range(-1, 2); // returns "-1", "0" or "1"
}
}
}

关于c# - 统一,C# |我如何在方法之间有等待时间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27031778/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com