Дата публикации:
Враг отлетает от игрока в Unity. Делаю top-down шутер. Столкнулся с
Враг отлетает от игрока в Unity. Делаю top-down шутер. Столкнулся с проблемой: если враг подойдет к игроку, а тот, в свою очередь, толкнет врага, то враг отлетит, и будет лететь бесконечно. Подскажите, что делать? Видео и фото скриптов ниже.
К сожалению, вы не предоставили видео или фото скриптов, поэтому я не могу точно определить, как реализовано взаимодействие между игроком и врагом. Однако, я могу предложить вам несколько возможных решений для вашей проблемы:
- Ограничьте максимальную скорость врага после толчка. Вы можете добавить проверку на максимальную скорость врага после каждого толчка. Если скорость врага превышает определенное значение, установите ее обратно на это значение. Например:
public float maxSpeed = 10f;
void Update()
{
// ...
if (enemyRigidbody.velocity.magnitude > maxSpeed)
{
enemyRigidbody.velocity = enemyRigidbody.velocity.normalized * maxSpeed;
}
// ...
}
- Добавьте таймер, чтобы ограничить время полета врага после толчка. Вы можете использовать
Coroutine
для этого. Например:
public float knockbackDuration = 1f;
private bool isKnockedBack = false;
void Update()
{
// ...
if (isKnockedBack)
{
StartCoroutine(ResetKnockback());
}
// ...
}
IEnumerator ResetKnockback()
{
yield return new WaitForSeconds(knockbackDuration);
isKnockedBack = false;
// Дополнительные действия, если необходимо
}
- Используйте коллайдеры для определения столкновений и остановки врага. Вы можете добавить коллайдер на врага и игрока, и при столкновении установить скорость врага на ноль. Например:
void OnCollisionEnter(Collision collision)
{
if (collision.gameObject.CompareTag("Player"))
{
enemyRigidbody.velocity = Vector3.zero;
}
}
Убедитесь, что вы применяете эти решения в соответствии с вашей конкретной реализацией игры. Если у вас возникнут дополнительные вопросы, пожалуйста, предоставьте больше информации или кода для более точного ответа.