Unity中的两个脚本Input.GetMouseButton(0)

时间:2017-04-18 08:56:58

标签: c# unity3d

我有两个这样的脚本:

void Update()
{
    if (Input.GetMouseButton(0))
    {
        if (GameObject.FindGameObjectWithTag("Object").transform.position.x > -1.9)
        {
            GameObject.FindGameObjectWithTag("Object").transform.Translate(Vector2.left * szybkosc);
        }
    }
}

第二个脚本类似,只有“Vector2.right”的区别。如果我有一个脚本,它可以很好地工作,但是当我添加第二个脚本时,它们不起作用。我将这些脚本添加到两个不同的游戏对象中。

1 个答案:

答案 0 :(得分:1)

  

第二个脚本类似,只有“Vector2.right”   差

那就是问题所在。

您正在使用("Object").transform.Translate(Vector2.left * szybkosc);

移动对象

然后你有另一个脚本用("Object").transform.Translate(Vector2.right * szybkosc);向右移动。

您期望发生什么?我认为“对象”GameObject应该保持静止甚至创建一个奇怪的行为。你不能同时将一个物体移动到两个相反的方向。

也许第二个脚本应该移动另一个GameObject GameObject.FindGameObjectWithTag("AnotherObject")而不是第一个脚本已经移动的第一个GameObject ....

与您的问题无关,但您应该在启动功能中调用GameObject.FindGameObjectWithTag一次。

GameObject objToMove;

void Start()
{
    objToMove = GameObject.FindGameObjectWithTag("Object");
}

void Update()
{
    if (Input.GetMouseButton(0))
    {
        if (objToMove.transform.position.x > -1.9)
        {
            objToMove.transform.Translate(Vector2.left * szybkosc);
        }
    }
}

修改

  

我正在制作控制系统。我有两个箭头 - 左箭头和右箭头   箭头。当我触摸并按住左箭头时,物体向左移动,当我   触摸并按住右箭头,物体向右移动。

在你的问题中提到你正在做的事情是很好的。这就是EventSystems的用途。 OnPointerClickOnDragOnEndDrag用于制作此类内容。您可以找到有关此here的更多信息。

实际上,您需要一个Visual Joystick。使用来自资产商店的Unity的CrossPlatformInputManager,应该这样做。通过OnPointerClickOnDrag,您可以节省大量时间。

然后可以使用CrossPlatformInputManager.GetAxisRaw("Horizontal")中的值向左或向右移动对象。