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

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

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

Может ли он толкнуть объект или упрется в него решается самой физикой.
Если двигать объект через трансформ, то физика не работает.
Если в ручную лочить кнопки при передвижение и проверять дошел ли игрок до следующей клетки, то когда он упрется, то и не разлочатся кнопки.
Может кто знает подходящий способ?)
  • Вопрос задан
  • 483 просмотра
Решения вопроса 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
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы