c# 中的秒表(统一)

Stopwatch in c# (unity)

我正在制作一扇门(类似于 Doom 64 的门)并且我有以下代码:

public class aperturaPorta : MonoBehaviour
{
public Transform playerCheck;
public Vector3 halfSize = new Vector3 (3f, 3f, 0.5f);
public LayerMask playerLayer;
bool playerEntering = false;

public BoxCollider collider;
public MeshRenderer renderer;

bool aprendo = false;
bool chiudendo = false;

public float openSpeed;
int counter = 1;
public int tick = 99;

// Update is called once per frame
void Update()
{
    playerEntering = Physics.CheckBox(playerCheck.position, halfSize, Quaternion.identity, playerLayer, QueryTriggerInteraction.UseGlobal);

    if (playerEntering && Input.GetButtonDown("e")) {
        aprendo = true;
        chiudendo = false;
    } 

    if (counter == 100) {
        chiudendo = true;
    }

    if (aprendo) {
        transform.position += new Vector3 (0f, openSpeed, 0f);
        counter += 1;
        if (counter > tick) {
            aprendo = false;
            chiudendo = true;
        }
    }

    if (chiudendo) {
        transform.position -= new Vector3 (0f, openSpeed, 0f);
        counter -= 1;
        if (counter < 1) {
            chiudendo = false;
        }
    }
}
}

这项工作,但门在打开后开始关闭,但速度太快,所以我想实现一个两三秒的秒表,以便在门打开后开始关闭,我该怎么做?谢谢

ps: 对不起,我是unity的新手

如果我没理解错的话,你想要在门打开之前有一个简单的延迟吗?保持相同的代码结构,您可以为此添加另一个计数器。

public float openSpeed;
int counter = 1;
public int tick = 99;
public int delayTicks = 100;
private int delayCounter = 0;

// Update is called once per frame
void Update()
{
    playerEntering = Physics.CheckBox(playerCheck.position, halfSize, Quaternion.identity, playerLayer, QueryTriggerInteraction.UseGlobal);

    if (playerEntering && Input.GetKeyDown(KeyCode.P))
    {
        aprendo = true;
        chiudendo = false;
    }

    if (counter == 100)
    {
        chiudendo = true;
    }

    if (aprendo)
    {
        transform.position += new Vector3(0f, openSpeed, 0f);
        counter += 1;
        if (counter > tick)
        {
            delayCounter = delayTicks;
            aprendo = false;
        }
    }

    if (delayCounter > 0) 
    {
        delayCounter--;
        if (delayCounter <= 0)
        {
            chiudendo = true;
        }
    }
    else if (chiudendo)
    {
        transform.position -= new Vector3(0f, openSpeed, 0f);
        counter -= 1;
        if (counter < 1)
        {
            chiudendo = false;
        }
    }
}