首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >慢动作时限

慢动作时限
EN

Stack Overflow用户
提问于 2022-05-06 15:52:31
回答 1查看 68关注 0票数 1

我在我的游戏中做了一个玩家,当你按住空格键的时候,它就会变成慢动作。但我希望玩家一次只能在慢动作中停留5秒。10秒后,玩家将可以再次进入慢动作.

下面是脚本的代码

代码语言:javascript
运行
复制
using UnityEngine;

public class SlowMotion : MonoBehaviour
{
    public float slowMotionTimescale;

    private float startTimescale;
    private float startFixedDeltaTime;

    void Start()
    {
        startTimescale = Time.timeScale;
        startFixedDeltaTime = Time.fixedDeltaTime;
    }

    void Update()
    {
        if (Input.GetKeyDown(KeyCode.Space))
        {
            StartSlowMotion();
        }

        if (Input.GetKeyUp(KeyCode.Space))
        {
            StopSlowMotion();
        }
    
    }

    private void StartSlowMotion()
    {
        Time.timeScale = slowMotionTimescale;
        Time.fixedDeltaTime = startFixedDeltaTime * slowMotionTimescale;
    }

    private void StopSlowMotion()
    {
        Time.timeScale = startTimescale;
        Time.fixedDeltaTime = startFixedDeltaTime;
    }
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-05-06 16:35:50

您可以使用IEnumerator运行依赖于时间的方法。方法描述如下:

代码语言:javascript
运行
复制
public bool inTimer; // are slow motion is in timer?
public IEnumerator StartTimer()
{
    inTimer = true;
    
    StartSlowMotion();
    
    yield return new WaitForSeconds(5f); // wait to end slow motion

    StopSlowMotion();
    
    yield return new WaitForSeconds(5f); // wait time to finish
    
    inTimer = false;
}

此外,您还需要考虑这种情况,而不是计时器。

代码语言:javascript
运行
复制
if (Input.GetKeyDown(KeyCode.Space) && !inTimer)
{
    StartCoroutine(StartTimer()); // how to run timer
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72144288

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档