Обнаружить уклон в Unity - PullRequest
       4

Обнаружить уклон в Unity

3 голосов
/ 21 апреля 2020

Я делаю 2D игру в Unity и хочу определить, когда игрок находится на склоне. Я использую этот код для определения уклона, но этот код работает ТОЛЬКО, когда игрок направлен вниз по склону. Когда игрок движется к склону, этот код возвращает false.

private bool OnSlope()
{
    if (isJumping)
        return false;

    RaycastHit2D hit = Physics2D.Raycast(groundCheck.position, Vector2.down, 0.5f, whatIsGround);

    if (hit.collider)
        if (hit.normal != Vector2.up)
            return true;
    return false;
}

Может кто-нибудь сказать мне, как изменить этот код для работы, когда игрок движется вверх и вниз по склону

Спасибо

Ответы [ 2 ]

0 голосов
/ 22 апреля 2020

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

if(Mathf.sign(Vector2.Dot(transform.forward,hit.normal) == 1){
    // facing downhill
else{
    // facing uphill
}

Если вы не изменились ваш прямой вектор при повороте вы всегда можете сохранить свой собственный, основываясь на последнем введенном направлении.
Надеюсь, это поможет

0 голосов
/ 22 апреля 2020
if (hit.collider)
    return true
return false

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

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