如何检测对象的点击
因此,我想制作一个游戏,玩家可以点击不同的对象并将其拉向他们。为了实现这一目标,我用这个代码:如何检测对象的点击
void FixedUpdate()
{
if(Input.GetMouseButton(0))
{
// Move the player
Rigidbody2D playerRigBod2D = thePlayer.GetComponent<Rigidbody2D>();
playerRigBod2D.AddForce(transform.position - thePlayer.transform.position);
// Draw a line towards the player
GetComponent<LineRenderer>().SetPosition(1, thePlayer.transform.position);
}
}
能正常工作只用一个此预制的对象,但一旦我增加更多,玩家被拉到点在这些对象之间。我无法弄清楚为什么,因为transform.position应该对应用这个脚本的每个对象都是唯一的吗?
我很感激,如果你人能提供一些线索这光,谢谢:)
当你点击,这个脚本连接每个对象检测if(Input.GetMouseButton(0))
为真,并因此所有应用同时给玩家一个力量 - 留下最终位置作为平均值。
您需要添加一个限定符来检测播放器何时点击特定对象,而不是一般点击。
正确。如果你试图检测到对象被点击了,最简单(但不是很灵活)的方法是实现[OnMouseUp](https://docs.unity3d.com/ScriptReference/MonoBehaviour.OnMouseUp.html)。 – apk
非常感谢!我希望在按住鼠标按钮时发生拉动,所以我认为我会实现一个在OnMouseDown中设置为true的bool,并在OnMouse Up中设置为false –
这是每个预制的脚本吗? –
'Input.GetMouseButton'用于检测鼠标点击**不**鼠标点击一个对象。检测对象的点击需要光线投射或统一事件系统(推荐)。 – Programmer