玩家在点击菜单按钮时移动



我的游戏是一个场景,所以我得到了这个小点击播放菜单设置。但问题是,当我点击菜单中的一个按钮时,按钮被按下,但玩家也开始移动。我想要实现的是,如果我点击菜单按钮播放器不会移动,但只要我点击屏幕上的其他地方,他就会开始移动。

我的播放器控制器脚本设置:

if (Input.GetMouseButtonDown(0))
    {
        inGameMenu.SetActive(true);
        startMenu.SetActive(false);
        if(grounded)
        {
            myRigidBody.velocity = new Vector2(angleOfJump, jumpForce);
        } 
    }
    if(Input.GetMouseButton(0))
    {
        if(jumpTimeCounter > 0)
        {
            myRigidBody.velocity = new Vector2(angleOfJump, jumpForce);
            jumpTimeCounter -= Time.deltaTime;
        }
    }
    if(Input.GetMouseButtonUp(0))
    {
        jumpTimeCounter = 0;
    }
我知道一定有一个简单的解决办法,但我就是找不到。

使用状态机,根据当前

处理点击
enum GameStates
{
    Started,
    Playing,
    Ended
};
GameStates currentState = GameStates.Started;

void Update()
{
    if (Input.GetMouseButtonDown(0))
    {
        if(currentState == GameStates.Started)
        {
            inGameMenu.SetActive(true);
            startMenu.SetActive(false);
            currentState = GameStates.Playing;
        }
        else if(currentState == GameStates.Playing)
        {
            // handle gameplay click here.
        }
        // ... etc
    }
}

您可以使用Umair m建议的状态机,这是轻松处理暂停菜单或类似内容(例如)的最佳解决方案。但另一个简单的解决方案是创建一个初始化为false的bool值,并在底部的压迫将该bool值设置为true以允许字符移动。

一个例子:

播放器脚本:

bool CharacterActive = false;
void Update()
{
    if(CharacterActive) // if the bool variable is active..
    {
        if(Input.MouseStuff :D) // if movement key pressed..
        {
            // ..Move the character
        }
    }
}
public void OnButtonClick()
{
    CharacterActive = true;
}
在Unity编辑器中,从OnClick()组件中的玩家游戏对象中添加OnButtonClick()方法到按钮。这里你可以看到一个视频:https://www.youtube.com/watch?v=TYzdhiRiKd0

相关内容

  • 没有找到相关文章

最新更新