kreo_OL
@kreo_OL
Медузко -_-

Движение по клеткам при помощи RigidBody?

Добрый день!
Необходимо что бы персонаж двигался по клеточкам и не нарушалась физика.
То есть нажали кнопку в право, он подвинулся на 1 клетку в право.
Если уперся во что-то то не двинулся.

Может ли он толкнуть объект или упрется в него решается самой физикой.
Если двигать объект через трансформ, то физика не работает.
Если в ручную лочить кнопки при передвижение и проверять дошел ли игрок до следующей клетки, то когда он упрется, то и не разлочатся кнопки.
Может кто знает подходящий способ?)
  • Вопрос задан
  • 1497 просмотров
Решения вопроса 1
kreo_OL
@kreo_OL Автор вопроса
Медузко -_-
Сделал в итоге так
private IEnumerator Move(Axis axis, int point)
    {
        var direction = Vector3.zero;
        direction[(int) axis] = point;
        _move = true;
        if (Physics.RaycastAll(transform.position, direction, 2f).Length > 1)
        {
            _move = false;
            yield break;
        }
        _finishPosition = transform.position + direction;
        _timer = 0;
        _curve = new AnimationCurve();
        _curve.AddKey(0f, transform.position[(int) axis]);
        _curve.AddKey(_speedMove, _finishPosition[(int) axis]);
        while (true)
        {
            _tmpPosition = transform.position;
            _tmpPosition[(int) axis] = _curve.Evaluate(_timer);
            _rb.MovePosition(_tmpPosition);
            if (transform.position == _finishPosition)
            {
                _move = false;
                yield break;
            }
            _timer += Time.fixedDeltaTime;
            yield return new WaitForFixedUpdate();
        }
    }

axis это enum с осями.
Есть проблема, иногда не выходит из цикла при достижение точки. Однако трансформ отдает нужную точку.
5a78638695251628418688.png
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы