Среда, 18 Декабря 2024, 23:13

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Враг трясется, как бешеный [Решение найдено!]
ZigMoonTДата: Среда, 12 Августа 2020, 00:10 | Сообщение # 1
был не раз
Сейчас нет на сайте
Всем привет! Суть алгоритма заключается в том, чтобы враг подходил к игроку, чтобы враг убегал от игрока и чтобы враг стал на фиксированном расстоянии. На гифке ниже можно наблюдать тряску врага crazy .


Вставил ту часть кода в которой подразумеваю ошибки. Очень прошу вас помочь.
Код
private void FixedUpdate()
    {
        if (Vector2.Distance(transform.position, player.position) > maxDistance)
        {
            rb.constraints = RigidbodyConstraints2D.None;
            rb.isKinematic = false;
            moveCharacter(movement, moveSpeed);
        }

        else if (Vector2.Distance(transform.position, player.position) < maxDistance)
        {
            rb.constraints = RigidbodyConstraints2D.None;
            moveCharacter(movement, -moveSpeed);
        }

        else if (Vector2.Distance(transform.position, player.position) == maxDistance)
        {
            rb.constraints = RigidbodyConstraints2D.FreezeAll;
            rb.isKinematic = false;
        }
    }

    void moveCharacter(Vector2 direction, float speed)
    {
        rb.MovePosition((Vector2)transform.position + (direction * speed * Time.deltaTime));
    }


Добавлено (12 Августа 2020, 00:57)
---------------------------------------------
Решение нашлось методом тыка. Для того, чтобы врага не штырило, необходимо увеличить значение линейного сопротивления и углового. На английском Linear drag and Angular drag.

Всем кто столкнулся с подобной проблемой желаю удачи!

Добавлено (12 Августа 2020, 12:11)
---------------------------------------------
Так же таким способом можно убирать дрожь игрока, если тот трясется при столкновении с коллайдерами.

Сообщение отредактировал ZigMoonT - Среда, 12 Августа 2020, 00:58
BurnoutДата: Среда, 12 Августа 2020, 18:19 | Сообщение # 2
был не раз
Сейчас нет на сайте
Если юзаешь Rigidbody, то:
1. Перемещая через transform, isKinematic всегда true
2. Либо юзай AddForce
  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг