Unity的两个播放器控件

时间:2019-06-17 06:04:21

标签: c# unity3d

我正在尝试创建一个具有两个可玩角色的平台游戏。当用户单击屏幕的右侧时,第一个字符跳,而单击屏幕的左侧时,其他字符跳。

我已经能够让第一个球员跳起来,但是不能让第二个球员跳起来。

if (Input.GetMouseButtonDown(0) && !IsDead)
{            
    jump = true;
}

此代码适用于一个字符,但我无法使第二个字符跳转。

编辑

@derHugo,感谢您的答复。我尝试实现您提供的代码。它适用于播放器2,但播放器1不能正常工作。这是我所拥有的:

public enum WhichPlayer
{
    Player1,
    Player2
};

public WhichPlayer whichPlayer;

void Update () {

 if (Input.GetMouseButtonDown(0) && !IsDead){            
    Vector2 position = Input.mousePosition;
    bool leftHalf = position.x <= Screen.width / 2;

    if (whichPlayer == WhichPlayer.Player1 && !leftHalf || whichPlayer == WhichPlayer.Player2 && leftHalf)
        {
            jump = true;
            animator.SetBool("Jump", true);
        } else {        
       jump = false;
       animator.SetBool("Jump", false);            
    }

播放器2:单击屏幕左侧时,播放器2跳转并播放动画。单击屏幕右侧时,播放器2停留在地面上,并且动画不播放。

播放器1:单击屏幕右侧时,播放器1跳转并播放动画。单击屏幕的左侧时,播放器1仍会跳,但动画不会播放。我无法弄清楚为什么播放器1仍然会跳,因为动画停止了,那是因为“ else”块中的代码。

1 个答案:

答案 0 :(得分:0)

我看不到决定支票

  

当用户单击屏幕右侧时,第一个字符跳,而单击屏幕左侧时,其他字符跳。

这需要两件事:

  • “玩家”需要两个知道是Player1还是Player2

    您可以使用例如像这样的枚举

    public enum WhichPlayer
    {
        Player1,
        Player2
    }
    

    并在播放器脚本中将其添加为字段

    public WhichPlayer whichPlayer;
    

    并将其设置在检查器中。

  • 您需要检查是否单击了屏幕的右侧或左侧

    if (Input.GetMouseButtonDown(0) && !IsDead)
    {
        // get mouse position
        var position = Input.mousePosition;
    
        // get left or right half of screen
        // it is left if the mouseposition x 
        // is smaller then the center of the screen
        var leftHalf = position.x <= Screen.width / 2;
    
        // finally check player type and screen side
        if(whichPlayer == Player1 && leftHalf || whichPlayer == Player2 && !leftHalf)
        {
            jump = true;
        }
    }
    

    (请参见Screen.widthInput.mousePosition均以像素为单位)