如何检测对象的点击

问题描述:

因此,我想制作一个游戏,玩家可以点击不同的对象并将其拉向他们。为了实现这一目标,我用这个代码:如何检测对象的点击

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应该对应用这个脚本的每个对象都是唯一的吗?

我很感激,如果你人能提供一些线索这光,谢谢:)

+0

这是每个预制的脚本吗? –

+0

'Input.GetMouseButton'用于检测鼠标点击**不**鼠标点击一个对象。检测对象的点击需要光线投射或统一事件系统(推荐)。 – Programmer

当你点击,这个脚本连接每个对象检测if(Input.GetMouseButton(0))为真,并因此所有应用同时给玩家一个力量 - 留下最终位置作为平均值。
您需要添加一个限定符来检测播放器何时点击特定对象,而不是一般点击。

+0

正确。如果你试图检测到对象被点击了,最简单(但不是很灵活)的方法是实现[OnMouseUp](https://docs.unity3d.com/ScriptReference/MonoBehaviour.OnMouseUp.html)。 – apk

+0

非常感谢!我希望在按住鼠标按钮时发生拉动,所以我认为我会实现一个在OnMouseDown中设置为true的bool,并在OnMouse Up中设置为false –