C# 在Unity中单击并拖动时在另一个对象上触发脚本

C# 在Unity中单击并拖动时在另一个对象上触发脚本,c#,unity3d,unity3d-2dtools,unity5,C#,Unity3d,Unity3d 2dtools,Unity5,我正在做一个2D项目,我添加了一个精灵作为拍摄按钮。这个按钮很好用。附加的脚本是:(我在精灵中添加了一个长方体碰撞器) 然后我添加了一个十字线,以便能够计算出瞄准的方向。下面是单击并拖动对象的脚本。在此对象上圈出二维坐标系 using UnityEngine; using System.Collections; [RequireComponent(typeof(MeshCollider))] public class Aim : MonoBehaviour { private V

我正在做一个2D项目,我添加了一个精灵作为拍摄按钮。这个按钮很好用。附加的脚本是:(我在精灵中添加了一个长方体碰撞器)

然后我添加了一个十字线,以便能够计算出瞄准的方向。下面是单击并拖动对象的脚本。在此对象上圈出二维坐标系

using UnityEngine;
using System.Collections;

[RequireComponent(typeof(MeshCollider))]

public class Aim : MonoBehaviour 
{

    private Vector3 screenPoint;
    private Vector3 offset;

    void OnMouseDown()
    {
        screenPoint = Camera.main.WorldToScreenPoint(gameObject.transform.position);

        offset = gameObject.transform.position - Camera.main.ScreenToWorldPoint(new Vector3(Input.mousePosition.x, Input.mousePosition.y, screenPoint.z));

    }

    void OnMouseDrag()
    {

        Vector3 curScreenPoint = new Vector3(Input.mousePosition.x, Input.mousePosition.y, screenPoint.z);

        Vector3 curPosition = Camera.main.ScreenToWorldPoint(curScreenPoint)+offset;
        this.transform.position = curPosition;

    }

}
当我添加这个瞄准脚本并点击十字线拖动它时,射击脚本就会消失


我对unity很陌生,所以我假设它很简单。谢谢您的帮助。

我将单击脚本中的更新功能更改为

void Update () {
    if(Input.GetMouseButtonDown(0)){
        Vector2 mousePosition = new Vector2();
        mousePosition = Camera.main.ScreenToWorldPoint(Input.mousePosition);


        if(this.collider2D.OverlapPoint(mousePosition)){
            LoadScript();

        }
}

因此,它仅在单击特定对象时触发。也许有一种更干净的方法,但这很有效。

我将单击脚本中的更新功能更改为

void Update () {
    if(Input.GetMouseButtonDown(0)){
        Vector2 mousePosition = new Vector2();
        mousePosition = Camera.main.ScreenToWorldPoint(Input.mousePosition);


        if(this.collider2D.OverlapPoint(mousePosition)){
            LoadScript();

        }
}
因此,它仅在单击特定对象时触发。也许有一个更干净的方法,但这是有效的