Единство - заставить персонажа идти в направлении касания / перетаскивания?В 3D пространстве? - PullRequest
0 голосов
/ 03 марта 2019

Хорошо, у меня есть игра 3D Unity, созданная для iOS, в которой будут реализованы эти элементы управления (в стиле шутера от первого лица):

  1. Камера следует за персонажем
  2. Сохранениепалец на экране заставляет персонажа ходить, палец вверх останавливает его
  3. В этом проблема: куда бы пользователь не начал прикасаться к экрану, куда бы он ни тянул (вперед, назад, влево, вправо), персонаж будет двигаться бесконечноэто направление.

Это должно быть уже сделано, но я нигде не могу найти ничего.У меня есть камера, как дитя персонажа, так что он позаботился о движении персонажа, но все, что у меня есть, это:

 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);

        } 

, который не работает по мере необходимости.Что я могу сделать здесь?

1 Ответ

0 голосов
/ 03 марта 2019

Вы можете просто попробовать использовать любой король джойстиков пользовательского интерфейса (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);
    }
}
...