Unity - 让角色走向 touch/drag 位置?在 3D 中 space?

Unity - make character walk towards touch/drag position? In 3D space?

好的,我有一个为 iOS 构建的 3D Unity 游戏,将在其中实现这些控件(以第一人称射击方式):

  1. 镜头紧跟在角色后面
  2. 将手指保持在屏幕上会使角色行走,手指向上会使它停止
  3. 这就是问题所在:无论用户开始触摸屏幕的哪个位置,无论他们向哪个方向拖动(向前、向后、左右),角色都会一直朝那个方向行走。

这一定已经完成了,但我在任何地方都找不到任何东西。我将相机作为角色的 child,所以已经处理好了,但对于角色移动,我所拥有的是:

 void Update()
    {
        if (Input.touchCount == 1 && Input.GetTouch(0).phase == TouchPhase.Moved)
        {

            Vector3 target = Camera.main.ScreenToWorldPoint(new Vector3(Input.mousePosition.x, Input.mousePosition.y, -10f));
            transform.Translate(Vector3.MoveTowards(transform.position, target, speed * Time.deltaTime) - transform.position);

        } 

这不能按需要工作。我可以在这里做什么?

例如,您可以尝试使用 UI 操纵杆 (https://assetstore.unity.com/packages/tools/input-management/joystick-pack-107631) 中的任意一个

并像这样访问它的参数:

public class TestMovement : MonoBehaviour
{
    public float Speed;
    public FloatingJoystick Joystick; //Set in the inspector, prefab from the asset
    private void Update()
    {
        transform.Translate(new Vector2(Joystick.Horizontal, Joystick.Vertical) * Speed * Time.deltaTime);
    }
}