Unity2D: отталкивает игрока при столкновении с противником - PullRequest
0 голосов
/ 21 июня 2020

Я пытаюсь добавить в свою игру сценарий, чтобы всякий раз, когда игрок сталкивается с врагом, он получает урон, но его также отталкивают в противоположном направлении. Я попытался реализовать код расширения Rigidbody2D, размещенный здесь

Вот часть моего сценария игрока:

    private void OnCollisionEnter2D(Collision2D other)
    {
        var magnitude = 5000;
        if (other.gameObject.CompareTag("Monster"))
        {
            TakeDamage(25);
            GetComponent<Rigidbody2D>().AddExplosionForce(magnitude, this.transform.position, 500);
        }
    }

Когда я запускаю игру в Unity, я получаю эту ошибку всякий раз, когда игрок сталкивается с противником:

Rigidbody2D.AddForce(force) assign attempt for 'Player' is not valid. Input force is { NaN, NaN }.
UnityEngine.Rigidbody2D:AddForce(Vector2, ForceMode2D)
Rigidbody2DExt:AddExplosionForce(Rigidbody2D, Single, Vector2, Single, Single, ForceMode2D) (at Assets/Scripts/Rigidbody2DExt.cs:20)
Player:OnCollisionEnter2D(Collision2D) (at Assets/Scripts/Player.cs:94)

1 Ответ

1 голос
/ 21 июня 2020

Добро пожаловать в StackOverflow.

Я бы порекомендовал вам попробовать:

private void OnCollisionEnter2D(Collision2D other){

    Vector2 impulse = new Vector2(-7, 2);
    if (other.gameObject.CompareTag("Monster")){
        TakeDamage(25);
        GetComponent<RigidBody2D>().AddForce(impulse, ForceMode2D.Impulse);
    }

}

Также вы должны найти способ получить желаемое направление для sh игрока. Например, если вы приближаетесь к противнику справа, вы можете захотеть, чтобы вас оттолкнули влево. В моем примере вас подтолкнет влево некоторый импульс вверх. Дайте мне знать, если у вас все еще есть проблемы :)

Ссылки здесь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...