Форум программистов, компьютерный форум, киберфорум
Unity, Unity3D
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/55: Рейтинг темы: голосов - 55, средняя оценка - 4.67
1 / 1 / 0
Регистрация: 06.02.2015
Сообщений: 38

Как игнорировать пару объектов на пути полёта луча

21.03.2016, 08:41. Показов 10376. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет. Модель человека. Луч идёт из объекта (туловища) и летит вниз(по вектору гравитации).Туловище в конце концов падает. Пока тело висит высоко выводиться лог что тело стоит как только наклонилось - объект упал. Луч попадает в ноги и возвращает дистанцию от ног, а мне нужно чтобы луч бил сразу в пол, сквозь ноги.. Можно конечно на этих объектах(ногах) в инспекторе в Layer поставить Ignore Raycast, но это не вариан, мне ещё нужно будет стрелять лучами. Может как то через слои ? Иль какой другой вариант, например RaycastAll. Спасибо.



C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
using UnityEngine;
using System.Collections;
 
public class Sc : MonoBehaviour
{
    private RaycastHit _rh;
    private GameObject _objectWhereDidHit;
    private Vector3 _gravityVector;
 
    public GameObject Cub;
    public LayerMask Layer;
    
    // Update is called once per frame
    void Update()
    {
        
        _gravityVector = Physics.gravity;
        //Пускаю луч от объекта куб в напревлении вектора гравитации
        Physics.Raycast(Cub.transform.position, _gravityVector, out _rh, Layer);
        
        //Проверим, стреляет луч в направлении вектора гравитации?
        Debug.DrawRay(Cub.transform.position, _gravityVector);
        
 
        //определяем в какой объект ударил луч.
        _objectWhereDidHit = _rh.transform.gameObject;
        Debug.Log(_objectWhereDidHit.name);
 
        //Если луч ударил в пол(тирреинс)
        //и если дистанция от пола больше 80 см то вывести лог что 
        //объект стоит, если меньше 80 то лог-объект упал.
 
        Debug.Log("Found an object - distance: " + _rh.distance);
        if (_objectWhereDidHit.name == "Terrain" && _rh.distance < 0.8122497)
        {
            Debug.Log("Объект упал");
        }
        if (_objectWhereDidHit.name == "Terrain" && _rh.distance > 0.8122497)
        {
            Debug.Log("Объект стоит");
        }
    }
}
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
21.03.2016, 08:41
Ответы с готовыми решениями:

Какова степень поляризации отраженного луча, если угол падения светового луча на границу раздела двух диэлектриков равен углу Брюстера?
Подскажите как решить задачку

Сделать пару движущихся объектов
Всем привет) надо сделать пару движущихся объектов в с# Помогите, кому не сложно:p

В заданном неориентированном графе найти все Гамильтоновы пути, соединяющие указанную пару вершин
Здравствуйте. Задание: в заданном неориентированном графе найти все гамильтоновы пути, соединяющие указанную пару вершин. Первая программа...

2
211 / 201 / 63
Регистрация: 24.09.2014
Сообщений: 532
21.03.2016, 09:41
Лучший ответ Сообщение было отмечено Владимир Циг как решение

Решение

Владимир Циг, можешь добавить новый Layer (Project settings- Tags & Layers), и рейкастить по всему, кроме него.

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
using UnityEngine;
using System.Collections;
 
public class Sc : MonoBehaviour
{
    private RaycastHit _rh;
    private GameObject _objectWhereDidHit;
    private Vector3 _gravityVector;
 
    public GameObject Cub;
    protected LayerMask Layer;
 
    void Awake()
    {
        Layer = ~LayerMask.NameToLayer("layer name to ignore");
    }
 
    // Update is called once per frame
    void Update()
    {
 
        _gravityVector = Physics.gravity;
        //Пускаю луч от объекта куб в напревлении вектора гравитации
        Physics.Raycast(Cub.transform.position, _gravityVector, out _rh, Layer);
 
        //Проверим, стреляет луч в направлении вектора гравитации?
        Debug.DrawRay(Cub.transform.position, _gravityVector);
 
 
        //определяем в какой объект ударил луч.
        _objectWhereDidHit = _rh.transform.gameObject;
        Debug.Log(_objectWhereDidHit.name);
 
        //Если луч ударил в пол(тирреинс)
        //и если дистанция от пола больше 80 см то вывести лог что 
        //объект стоит, если меньше 80 то лог-объект упал.
 
        Debug.Log("Found an object - distance: " + _rh.distance);
        if (_objectWhereDidHit.name == "Terrain" && _rh.distance < 0.8122497)
        {
            Debug.Log("Объект упал");
        }
        if (_objectWhereDidHit.name == "Terrain" && _rh.distance > 0.8122497)
        {
            Debug.Log("Объект стоит");
        }
    }
}
1
1 / 1 / 0
Регистрация: 06.02.2015
Сообщений: 38
22.03.2016, 09:03  [ТС]
Проблема ещё была в том, что я как видно третьим параметром в Рейкасте указал слой. А нужно было указать третьим параметром длину луча и четвёртым слой. Спасибо !
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
22.03.2016, 09:03
Помогаю со студенческими работами здесь

Как включить режим полёта?
Как програмно включить режим полёта?

Нахождение кратчайшего пути и выделение объектов
Здравствуйте! Пишу программу для построения графов и нахождения кратчайшего пути по построенному на C++ c использованием WinAPI и GDI. ...

Как исправить траекторию полёта шара Arkanoid?
Помогите пожалуйста с полётом шара, никак разобраться не могу, шар летит только по углом 45 градусов, и при отбивании от ракетки траектории...

Как рассчитать траекторию полёта космического аппарата с Земли на Марс?
Как расчитать траекторию полёта комического аппарат с Земли на Марс? http://e-libra.su/read/220870-na-zov-tainstvennogo-marsa.html

Как игнорировать ошибки?
Доброго времени суток. При нажатие на кнопку дельфи удаляет строку из БД он её удаляет но выдаёт ошибку.Как игнорировать эту ошибку...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru