WasTabon
@WasTabon

Как можно сделать столкновения в 2д, чтобы объекты не входили друг в друга?

Типо есть стена с коллайдером 2д и персонаж с коллайдером 2д и рижидбоди 2д, но когда персонаж идет в стену, то он в неё входит, потом как бы отпрыгивает и так по кругу, а как можно сделать так, чтобы он не проваливался в стену, а просто останавливался?
Вот скрипт движения если что
void Update()
    {

        if (Input.GetKeyDown(KeyCode.Space))
        {
            rigidbody2D.AddForce(transform.up * jumpForce, ForceMode2D.Impulse);
        }

        if (Input.GetKey(KeyCode.D))
        {
            transform.Translate(Vector2.right * Time.deltaTime * speed);
        }

        if (Input.GetKey(KeyCode.A))
        {
            transform.Translate(Vector2.left * Time.deltaTime * speed);
        }

    }
  • Вопрос задан
  • 270 просмотров
Решения вопроса 1
@DarkoreXOR
Метод transform.Translate перемещает объект игнорируя физический движок (вдавливая в стену), а после этого физический движок пытается что-то предпринять. Чтобы физика просчитывалась как нужно, следует использовать методы в rigidbody2D для толкания персонажа, как вы это делаете в случае пробела. И не стоит использовать вместе прямое перемещение через transform.Translate и физику твердых тел, иначе будете получать именно такие проблемы.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
B-Erolskiy
@B-Erolskiy
Unity Developer
Создать Physic Material в проекте с помощью Create -> PhysicMaterial, затем добавить коллайдеру в свойстве Material этот материал.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы