我有两个这样的脚本:
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”的区别。如果我有一个脚本,它可以很好地工作,但是当我添加第二个脚本时,它们不起作用。我将这些脚本添加到两个不同的游戏对象中。
答案 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的用途。 OnPointerClick
,OnDrag
和OnEndDrag
用于制作此类内容。您可以找到有关此here的更多信息。
实际上,您需要一个Visual Joystick。使用来自资产商店的Unity的CrossPlatformInputManager,应该这样做。通过OnPointerClick
和OnDrag
,您可以节省大量时间。
然后可以使用CrossPlatformInputManager.GetAxisRaw("Horizontal")
中的值向左或向右移动对象。