Перемещение игрока к точке щелчка в Unity 2D

Я делаю 2D-игру «укажи и щелкни», в которой я хочу, чтобы игрок двигался к щелкнутым объектам. Это мой код для перемещения игрока к двери:

using UnityEngine;
using System.Collections;

public class MoveOnClick : MonoBehaviour {
public GameObject door;
public GameObject player;
public float speed;
public Vector3 target;

void Update () {
    if (Input.GetMouseButtonDown (0)) {
        RaycastHit2D hit = Physics2D.Raycast(Camera.main.ScreenToWorldPoint(Input.mousePosition), Vector3.zero);
        if (hit.collider != null) {
            player.transform.position = Vector3.MoveTowards(player.transform.position, target, speed * Time.deltaTime);
        }
    }
}

}

Проблема в том, что игрок перемещается только на один пиксель за клик. Я хочу, чтобы игрок двигался до двери, если дверь щелкнута.


person Balper    schedule 10.05.2017    source источник


Ответы (1)


Это должно работать:

void Update () {
    if (Input.GetMouseButtonDown (0)) {
        RaycastHit2D hit = Physics2D.Raycast(Camera.main.ScreenToWorldPoint(Input.mousePosition), Vector3.zero);  
    target = hit.transform.position;  
    }

    if (hit.collider != null) {
        player.transform.position = Vector3.MoveTowards(player.transform.position, target, speed * Time.deltaTime);
    }
}
person Woltus    schedule 11.05.2017