【问题标题】:How to detect click on an object [duplicate]如何检测点击对象[重复]
【发布时间】:2017-08-17 15:35:25
【问题描述】:

所以,我想制作一个游戏,玩家可以点击不同的物体并被拉向它们。为了实现这一点,我使用了以下代码:

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

如果你们中的某个人能对此有所了解,我将不胜感激,谢谢:)

【问题讨论】:

  • 每个预制件上都有这个脚本吗?
  • Input.GetMouseButton 用于检测鼠标单击不是鼠标单击对象。检测对象点击需要光线投射或统一事件系统(推荐)。

标签: c# unity3d unity5 unity3d-2dtools unity3d-5


【解决方案1】:

当您单击时,附加此脚本的每个对象都将if(Input.GetMouseButton(0)) 检测为真,因此都同时向玩家施加力 - 将结束位置保留为平均值。
您需要添加一个限定符,用于检测玩家何时点击特定对象,而不是一般点击。

【讨论】:

  • 正确。如果您试图检测对象被点击,最简单(但不是很灵活)的方法是实现OnMouseUp
  • 非常感谢!我希望在按住鼠标按钮时进行拉动,所以我想我将实现一个 bool,在 OnMouseDown 中设置为 true,在 OnMouse Up 中设置为 false
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-09-10
  • 2014-12-14
  • 2017-05-03
  • 1970-01-01
相关资源
最近更新 更多