Столкновение Unity 2D игнорируется при применении высокой скорости после одной цели - PullRequest
0 голосов
/ 25 августа 2018

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

Есть ли способ обнаружить GameObject перед каждым игроком, чтобы его скорость была равна нулю, и если у игрока пустое зрение, оно может двигаться прямо вперед?

Я думаю, что этого можно достичь, получив первый контакт в векторе роста игрока и сравнив тег GameObject, затем, если он равен Player, собственная скорость установлена ​​на ноль.

1 Ответ

0 голосов
/ 26 августа 2018

Если ваши объекты используют компонент RigidBody2D, вы можете попробовать изменить режим обнаружения столкновений с «Дискретный» на «Непрерывный».

Чтобы объекты не сталкивались друг с другом, поместите этот код передкод, который перемещает объект:

    Vector2 difference = target - (Vector2)transform.position;
    RaycastHit2D[] hit = new RaycastHit2D[1];
    if (Physics2D.CircleCast(transform.position, radius, difference.normalized, new ContactFilter2D(), hit, difference.magnitude) > 0) {
        // Something is in the way
        float firstObstacleDistance = hit[0].distance;
        target = difference.normalized * firstObstacleDistance;
    }

Переменная target должна быть позицией мыши, а radius - радиусом компонента CircleCollider.

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