如果发生碰撞,如何单击运动并停止?

时间:2019-11-28 04:09:45

标签: c# unity3d

所以我有一个关于运动的问题,单击统一是一个问题,这当然是当我单击播放器时,播放器将移动到我单击的位置,但是,我不希望我单击墙壁,然后单击播放器将是另一个按钮在我单击的最后一个鼠标上,我已经添加了一些对撞机,但玩家只是绕过了对撞机,因此对撞机没有任何作用

the explanation

这是脚本

[Header("Tweak")]
[SerializeField] Transform target;
Vector2 targetPos;
public float speed = 5f;


// Start is called before the first frame update
void Start()
{
    targetPos = transform.position;
}

// Update is called once per frame
void Update()
{
    Move();
}

public void Move()
{
    if (Input.GetMouseButtonDown(0))
    {
        targetPos = (Vector2)Camera.main.ScreenToWorldPoint(Input.mousePosition);
        if ((targetPos.x >= transform.position.x))
        {
            transform.localScale = new Vector2(.5f, .5f);  
        }
        else
        {
            transform.localScale = new Vector2(-.5f, .5f);
        }
        target.position = targetPos;
    }
    if ((Vector2)transform.position != targetPos)
    {
        transform.position = Vector2.MoveTowards(transform.position, targetPos, speed * Time.deltaTime);
    }
}

1 个答案:

答案 0 :(得分:1)

您可以使用Raycast做到这一点

if (Input.GetMouseButtonDown(0))
     {
         Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
         RaycastHit hitInfo;
         if (Physics.Raycast(ray, out hitInfo))
         {
             if (hitInfo.collider.gameObject.tag == "Wall")
             {
                 Debug.Log("tag");
                 //You can do what ever you want here.
             }
         }
     }