Враг отлетает от игрока в Unity. Делаю top-down шутер. Столкнулся с
14.03.2022
Дата публикации:

Враг отлетает от игрока в Unity. Делаю top-down шутер. Столкнулся с

9380d1a7

Враг отлетает от игрока в Unity. Делаю top-down шутер. Столкнулся с проблемой: если враг подойдет к игроку, а тот, в свою очередь, толкнет врага, то враг отлетит, и будет лететь бесконечно. Подскажите, что делать? Видео и фото скриптов ниже.

К сожалению, вы не предоставили видео или фото скриптов, поэтому я не могу точно определить, как реализовано взаимодействие между игроком и врагом. Однако, я могу предложить вам несколько возможных решений для вашей проблемы:

  1. Ограничьте максимальную скорость врага после толчка. Вы можете добавить проверку на максимальную скорость врага после каждого толчка. Если скорость врага превышает определенное значение, установите ее обратно на это значение. Например:
public float maxSpeed = 10f;

void Update()
{
    // ...
    if (enemyRigidbody.velocity.magnitude > maxSpeed)
    {
        enemyRigidbody.velocity = enemyRigidbody.velocity.normalized * maxSpeed;
    }
    // ...
}
  1. Добавьте таймер, чтобы ограничить время полета врага после толчка. Вы можете использовать Coroutine для этого. Например:
public float knockbackDuration = 1f;
private bool isKnockedBack = false;

void Update()
{
    // ...
    if (isKnockedBack)
    {
        StartCoroutine(ResetKnockback());
    }
    // ...
}

IEnumerator ResetKnockback()
{
    yield return new WaitForSeconds(knockbackDuration);
    isKnockedBack = false;
    // Дополнительные действия, если необходимо
}
  1. Используйте коллайдеры для определения столкновений и остановки врага. Вы можете добавить коллайдер на врага и игрока, и при столкновении установить скорость врага на ноль. Например:
void OnCollisionEnter(Collision collision)
{
    if (collision.gameObject.CompareTag("Player"))
    {
        enemyRigidbody.velocity = Vector3.zero;
    }
}

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