Unity2D 鼠标点击并转到

Unity2D click and go to the mouse

我正在制作一个游戏,您可以在其中控制蠕虫。控件很简单:您单击,蠕虫就会转到您单击的位置...至少我是这样做的。

它很容易作弊,因为如果你将鼠标放在一个地方,蠕虫就会开始出现故障并保持不动。 (一旦点击,蠕虫应该不会停止,直到达到下一个级别)

这是一个视频: https://youtu.be/LIcqvgacI1s

代码如下:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Movement : MonoBehaviour
{

    private Vector2 mousePosition;
    private Rigidbody2D rb;
    private Vector2 direction;
    public float moveSpeed = 100f;

    // Use this for initialization
    void Start()
    {
        rb = GetComponent<Rigidbody2D>();
    }

    void FixedUpdate()
    {
        if (Input.GetMouseButton(0))
        {
            mousePosition = Camera.main.ScreenToWorldPoint(Input.mousePosition);
            direction = (mousePosition - rb.position).normalized;
            Vector2 lookDir = mousePosition - rb.position;
            float angle = Mathf.Atan2(lookDir.y, lookDir.x) * Mathf.Rad2Deg - 90f;
            rb.rotation = angle;
            rb.velocity = new Vector2(direction.x * moveSpeed, direction.y * moveSpeed);
        }
    }
}

如果需要更多信息,我很乐意提供!

提前致谢!

修复方法如下:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Movement : MonoBehaviour
{

    private Vector2 mousePosition;
    private Rigidbody2D rb;
    private Vector2 direction;
    public float moveSpeed = 100f;

    // Use this for initialization
    void Start()
    {
        rb = GetComponent<Rigidbody2D>();
    }

    void FixedUpdate()
    {
        if (Input.GetKeyDown(KeyCode.Mouse0))
        {
            mousePosition = Camera.main.ScreenToWorldPoint(Input.mousePosition);
            direction = (mousePosition - rb.position).normalized;
            Vector2 lookDir = mousePosition - rb.position;
            float angle = Mathf.Atan2(lookDir.y, lookDir.x) * Mathf.Rad2Deg - 90f;
            rb.rotation = angle;
            rb.velocity = new Vector2(direction.x * moveSpeed, direction.y * moveSpeed);
        } else
        {
            rb.position = new Vector2(rb.position.x, rb.position.y);
        }
    }
}