Использование Rigidbody.AddForce с NavmeshAgent - PullRequest
0 голосов
/ 19 мая 2019

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

В документах Unity также говорится, что мне нужно установить RigidBody на Kinematic, но тогда я не могу добавить к нему силу?

private void Update()
{
    if (!playerHit && followPlayer)
    {
        _agent.SetDestination(GameManager.instance.ActivePlayer.transform.position);
    }
}

private void FixedUpdate()
{
    if (playerHit)
    {
        _rb.AddForce(-transform.forward * 10, ForceMode.Impulse);
    }
}

1 Ответ

0 голосов
/ 19 мая 2019

Вы можете сделать это, отключив агента navmesh на определенное время, а затем снова включив его, когда скорость приблизится к нулю.

private void Update()
{
    if (!playerHit && followPlayer)
    {
        _agent.SetDestination(GameManager.instance.ActivePlayer.transform.position);
    }
}

private void FixedUpdate()
{
    if (playerHit)
    {
        agent.enabled = false; // disabling the navmesh agent.
        _rb.AddForce(-transform.forward * 10, ForceMode.Impulse);
    }
}

Реализация может быть улучшена, дайте мне знать, еслиэто помогает.

...