Игра с 2D-рейкастом сверху вниз в unity3D

Я делаю игру, похожую на покемонов, где вы ходите. Это 2D-игра сверху вниз. Однако я пытаюсь обнаружить определенную плитку передо мной.

Мой персонаж находится в Y 1, а карта в Y 0. Я пытался перенаправить raycast, но это не сработало.

вот что я пробовал:

if (Input.GetKey("w") && isMoving == false)
        {
            bool disableMove = false;
            RaycastHit hit;
            if (Physics.Raycast(transform.position, Vector3.forward, out hit, 2))
            {
                var distanceToGround = hit.distance;
                Debug.Log("HIT");

                if (hit.collider.gameObject.tag == "collision")
                {
                    disableMove = true;
                    Debug.Log("Tree");
                }
            }
            if (!disableMove)
            {
                Calculatewalk();
                anim.Play("WalkingUp");
                increment = 0;
                isMoving = true;
                startPoint = transform.position;
                endPoint = new Vector3(transform.position.x, transform.position.y, transform.position.z + 1);
            }
            disableMove = false;
        }

person NullReference    schedule 24.04.2014    source источник
comment
действительно не работал, мало что говорит нам о проблеме, с которой вы столкнулись. Ошибки компиляции? Исключение во время выполнения? Кто они такие? Вы погуглили ошибку, чтобы узнать, что это такое и почему это происходит? Или это неожиданное поведение? Что случилось? Что вы ожидали? Что вы уже пытались исправить? Пожалуйста, дополните.   -  person tnw    schedule 24.04.2014
comment
Это будет искать любое дерево в направлении взгляда, независимо от того, как далеко оно находится, вы должны ограничить длину, кроме того, если ваша карта организована в ячейки, не проще ли протестировать соседние ячейки?   -  person Gusman    schedule 24.04.2014
comment
Ничего не произошло, он ничего не обнаружил. Я смог пройти прямо мимо него. @tnw   -  person NullReference    schedule 24.04.2014
comment
Вы добавили коллайдер на фрагмент карты?   -  person Verv    schedule 25.04.2014
comment
Поскольку это 2D-игра, используете ли вы 2D-коллайдеры и настройки Unity 2D по умолчанию? Если это так, вы должны использовать Physics2D.Raycast, а Vector3 будет (0,1,0) или Vector3.Up   -  person wheelsx    schedule 25.04.2014


Ответы (2)


Если коллайдеры двумерные, используйте Physics2D.Raycast.

Если вы не используете новую систему Unity 2D, мы мало чем сможем вам помочь. Возможно, вы находитесь не в правильном слое Z. Также Vector3.forward кажется не очень хорошим. Попробуйте использовать transform.forward.

Надеюсь, я помог вам!

person Entwicklerpages    schedule 25.04.2014

xD почему у вас есть переменная javascript, когда вы пишете в c#:

var distanceToGround = hit.distance;

строка 7

person User    schedule 08.01.2016
comment
Это должен быть комментарий. - person ρяσѕρєя K; 08.01.2016