Хобрук: Ваш путь к мастерству в программировании

Raycast не может найти помеченный игровой объект

Мой Raycast вращается вокруг игрока и сканирует 2D-область. Он должен распознать другой Gameobject, который помечен как Pick Up, но found всегда ложно.

using UnityEngine;
using System.Collections;

public class Findway : MonoBehaviour {

    public GameObject Player;
    // Use this for initialization
    void Start () {
        transform.position = Player.transform.position;
    }

    RaycastHit hit;
    float[] distance = new float[360];
    int moveAngle = 0;
    bool found = false;

    // Update is called once per frame
    void Update () {
        transform.position = Player.transform.position;

        for (int iii = 0; iii < 360; iii++) 
        {
            Vector3 rayway = new Vector3 (Mathf.Cos(180 * iii / Mathf.PI), 0, Mathf.Sin(180 * iii / Mathf.PI));
            if (Physics.Raycast (transform.position, rayway, out hit, 100f))
            {
                distance [iii] = hit.distance;
                //Debug.Log(hit.collider.gameObject);
                //Debug.DrawRay(transform.position, transform.forward, Color.green);
                if (hit.collider.CompareTag ("Pick Up"))
                {
                    moveAngle = iii;
                    found = true;
                }
            }
        }
    }
}
17.11.2015

  • дозировать ваш плеер, двигаясь? 17.11.2015
  • Да, это должен быть КИ, который когда-нибудь выберется из лабиринта. Итак, он движется, и луч света должен быть своего рода радаром для сканирования местности. 17.11.2015

Ответы:


1

Используйте свой луч из цикла for, хороший процессор не займет много времени, чтобы запустить итерацию до 360, и использование его в обновлении заставит его работать бесконечное количество раз, вызывая больше проблем, всегда используйте разделяй и властвуй, минимизируй код, удаляй все и просто запустите луч, чтобы проверить, работает ли он без какого-либо вращения, затем примените вращение, сообщите, сработало ли оно. Дважды проверьте, есть ли объект, помеченный как «Поднять». Также никогда не используйте цикл for при обновлении без явного условия, чтобы остановить его, как bool, иначе он продолжит работу.

17.11.2015
  • на всякий случай помните, что у ваших целей тоже должен быть активный коллайдер, просто пометьте его правильно для raycast недостаточно ... 17.11.2015
  • Спасибо за подсказку со стационарным raycast. После ночи хорошего сна я изменил ракурс камеры и понял, что Raycast находится ниже, чем плавающий объект. фейспалм 17.11.2015
  • Если это помогло, не могли бы вы проверить это, как ответил 18.11.2015
  • Новые материалы

    Решения DBA Metrix
    DBA Metrix Solutions предоставляет удаленного администратора базы данных (DBA), который несет ответственность за внедрение, обслуживание, настройку, восстановление базы данных, а также другие..

    Начало работы с Блум
    Обзор и Codelab для генерации текста с помощью Bloom Оглавление Что такое Блум? Некоторые предостережения Настройка среды Скачивание предварительно обученного токенизатора и модели..

    Создание кнопочного меню с использованием HTML, CSS и JavaScript
    Вы будете создавать кнопочное меню, которое имеет состояние наведения, а также позволяет вам выбирать кнопку при нажатии на нее. Финальный проект можно увидеть в этом Codepen . Шаг 1..

    Внедрите OAuth в свои веб-приложения для повышения безопасности
    OAuth — это широко распространенный стандарт авторизации, который позволяет приложениям получать доступ к ресурсам от имени пользователя, не раскрывая его пароль. Это позволяет пользователям..

    Классы в JavaScript
    class является образцом java Script Object. Конструкция «class» позволяет определять классы на основе прототипов с чистым, красивым синтаксисом. // define class Human class Human {..

    Как свинг-трейдеры могут использовать ИИ для больших выигрышей
    По мере того как все больше и больше профессиональных трейдеров и активных розничных трейдеров узнают о возможностях, которые предоставляет искусственный интеллект и машинное обучение для улучшения..

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