C# 按任意键播放

C# 按任意键播放,c#,unity3d,C#,Unity3d,我是unity的新手,我正在尝试为游戏创建菜单,但我似乎无法使用按键来激活按钮 public class MenuCamControl : MonoBehaviour { public Transform currentMount; public float speed = 0.1f; public float zoom = 0.1f; void Update() { transform.position = Vector3.Ler

我是unity的新手,我正在尝试为游戏创建菜单,但我似乎无法使用按键来激活按钮

public class MenuCamControl : MonoBehaviour
{
    public Transform currentMount;
    public float speed = 0.1f;
    public float zoom = 0.1f;   

    void Update()
    {
        transform.position = Vector3.Lerp(transform.position, currentMount.position, speed);
        transform.rotation = Quaternion.Slerp(transform.rotation, currentMount.rotation, speed);
        
    }

    public void SetMount(Transform newMonut)
    {
       
               currentMount = newMonut;
              
    }
}

编辑:我添加了我现在拥有的代码,这是一个动画


编辑2:这就是动画的主题

我可以简单解释一下这个问题。 不过,如果你看这段视频,效果会更好。 基本上,场景中需要有画布;然后,您需要按照右键单击(鼠标上)UI按钮路径在画布中添加一个按钮。

使用和一个标志来确定何时按下第一个键以不多次触发它

public class Example: MonoBehaviour
{
    private bool keyPressed = false;
    void Update()
    {
        if (Input.anyKey && !keyPressed)
        {
             keyPressed = true; 
        }
        else
        {
                // put your camera move code here 
        }
    }
}
此方法还可以拾取任何鼠标输入。如果你真的只需要键盘输入,而不是鼠标输入,我可以更新我的答案

您不需要为此设置UI按钮。只是一个跟踪输入是否发生的函数和另一个处理启动或加载游戏的函数。如果希望在单击按钮时启动游戏,只需在代码或检查器中将onClick侦听器分配给函数

如果在单击后添加要运行的代码或要执行的操作,我可以更新我的代码段

编辑:以下是如何将我的代码片段与当前代码结合起来。您也可以使用
协同程序
,但它不是必需的

public class MenuCamControl : MonoBehaviour
{
    public Transform currentMount;
    public float speed = 0.1f;
    public float zoom = 0.1f;  
    
    private bool keyPressed = false;

    void Update()
    {
        if (Input.anyKey && !keyPressed)
        {
             keyPressed = true; 
        }
        else
        {
            transform.position = Vector3.Lerp(transform.position, currentMount.position, speed);
            transform.rotation = Quaternion.Slerp(transform.rotation, currentMount.rotation, speed);
        }
    }

    // I am not sure what this does, it currently is not called?
    public void SetMount(Transform newMonut)
    {
       currentMount = newMonut;      
    }
}
使用
协同程序
,它可能看起来像

void Update()
{
    if (Input.anyKey && !keyPressed)
    {
        keyPressed = true; 
        
        if(referenceToCoroutine == null)
            referenceToCoroutine = StartCoroutine(DoCameraAnimation());
    }
}

private IEnumerator DoCameraAnimation()
{
    ...   
}

您需要稍微更改当前的摄影机动画,以便在
协同程序中工作

我有一个画布,里面有一个按钮,但我似乎无法连接到按钮,我将观看视频,看看我是否能找到它,提前感谢感谢感谢代码片段我正在制作移动摄影机动画,如何将其添加到您的代码中?我将用代码片段编辑我的问题。我现在正在打电话,所以编辑代码比较困难。您可以将其放入
else if
块中,或者调用
协同程序
,该程序在
if
条件中执行相机移动。此菜单屏幕动画是否将结束以加载游戏?或者你的游戏和你的菜单在同一个场景中?很抱歉我来自葡萄牙,很晚才回复,我添加了一张新图片,代码片段仍然不起作用。。。我应该把代码文件放在哪里?在按钮或画布内?所有这些代码将在检测到任何输入时启动动画。之后,你需要挂上你的3个按钮。脚本需要位于任何对象上。你在设置坐骑吗?你的动画工作过吗?我解决了问题,我把动画设置为按钮功能“onClick”,所以我必须模拟被点击的按钮。我用过这样的东西。。。if(Input.anyKey){EventSystem.current.SetSelectedGameObject(this.gameObject);}