我正在尝试创建一个具有两个可玩角色的平台游戏。当用户单击屏幕的右侧时,第一个字符跳,而单击屏幕的左侧时,其他字符跳。
我已经能够让第一个球员跳起来,但是不能让第二个球员跳起来。
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”块中的代码。
答案 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.width
和Input.mousePosition
均以像素为单位)