Как я могу перемещать персонажа, касаясь экрана в Unity 2D - PullRequest
0 голосов
/ 24 марта 2020

Я использую этот код, и он работает, но проблема в том, что если я коснусь где-нибудь на экране, мой персонаж будет телепортироваться в положение, к которому я прикасаюсь, вместо того, чтобы медленно двигаться туда, я строю игру на Unity 2D и это код

 void Update () {

    if (Input.touchCount > 0) {

        Touch touch = Input.GetTouch(0);
        Vector3 touch_Pos = Camera.main.ScreenToWorldPoint(touch.position);
        transform.position = touch_Pos;
    }
}

Спасибо Вам

1 Ответ

2 голосов
/ 24 марта 2020

Вы можете использовать MoveTowards

. Используйте элемент MoveTowards для перемещения объекта в позиции current в направлении позиции target. Обновляя положение объекта в каждом кадре, используя положение, рассчитанное этой функцией, вы можете плавно перемещать его в направлении target. Управляйте скоростью движения с помощью параметра maxDistanceDelta. Если позиция current уже ближе к target, чем maxDistanceDelta, возвращаемое значение равно target; новая позиция не выходит за рамки target. Чтобы убедиться, что скорость объекта не зависит от частоты кадров, умножьте значение maxDistanceDelta на Time.deltaTime.

// Set via the Inspector in Units/second
[SerializeField] private float _moveSpeed = 1;

// Could also already reference this in the Inspector if possible
[SerializeField] private Camera _camera;

private void Awake()
{
    // It is better to cache the camera reference since Camera.main is quite expensive
    if(!_camera) _camera = Camera.main;
}

private void Update () 
{
    if (Input.touchCount > 0) 
    {
        var touch = Input.GetTouch(0);
        // Just so you know: Note that ScreenToWorldPoint takes a Vector3 where the 
        // Z component is the distance in front of the camera
        // currently you are passing in 0 so the object will move in the same plane
        // as the camera
        var touch_Pos = _camera.ScreenToWorldPoint(touch.position);
        transform.position = Vector3.MoveTowards(transform.position, touch_Pos, _moveSpeed * Time.deltaTime);
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...