Unity2D: Заставляет игрока kinemati c сталкиваться с коллайдером тайловой карты - PullRequest
0 голосов
/ 12 июля 2020

Я работаю над 2D-игрой с сеткой с двумя тайловыми картами. Тайловая карта, по которой можно ходить, и тайловая карта препятствий. Я дал тайловой карте препятствий tilemapcollider2d. Я хочу, чтобы у моего игрока было жесткое тело kinemati c, чтобы физика не делала странных вещей после столкновения с плитками препятствий.

Дело в том, что игрок сталкивается с плитками препятствий только в том случае, если у них есть динамика c твердое тело. Как я могу заставить игрока столкнуться с плитками препятствий, имея kinemati c жесткое тело?

Я также пробовал добавить жесткое тело2d к тайловой карте препятствий, но это не дало никакого эффекта. Если он не установлен на динамический c, тогда все плитки препятствий начинают падать, но на мгновение сталкиваются с игроком, прежде чем игрок проходит сквозь него.

Это код для движения моего игрока (тело = RigidBody2D плеера):

void Update()
{
    // Gives a value between -1 and 1
    horizontal = Input.GetAxisRaw("Horizontal"); // -1 is left
    vertical = Input.GetAxisRaw("Vertical"); // -1 is down
}

void FixedUpdate()
{
    if (horizontal != 0 && vertical != 0) // Check for diagonal movement
    {
        // limit movement speed diagonally, so you move at 70% speed
        horizontal *= moveLimiter;
        vertical *= moveLimiter;
    }

    body.velocity = new Vector2(horizontal * Speed, vertical * Speed);
}

Заранее спасибо!

1 Ответ

0 голосов
/ 12 июля 2020

Я полагаю, вы просто хотите, чтобы игрок останавливался, когда он ударяет по тайловой карте препятствий

Решение: добавьте окно Collider 2D для игрока и тайловую карту препятствий

Если хотите для обнаружения столкновения попробуйте использовать триггер

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