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

При пускании луча объект реагирует сам на себя

20.01.2017, 16:17. Показов 1741. Ответов 2

Студворк — интернет-сервис помощи студентам
У меня есть источник лазера и преломляющие кубы. Источник создает лазер используя луч, при попадании на куб меняет в его коде значение переменной, включая его источник лазера. Если куб не получает лазер, его источник отключается сам (такие же лазеры как и в Portal 2). Я вложил в скрипт переменную типа bool, определяющую, принадлежит скрипт к источнику или к кубу, чтобы менять свойства лазера отдельно для источника и для куба. В чем проблема: с самого начала куб не подает лазер, как и должно быть, и при попадании на него лазера из источника, начинает подачу, но после этого подает его постоянно, отключаясь в случайный момент по неизвестной причине. Если убрать у него фрагмент кода, ответственный за включение других кубов (если лазер из куба попадает на другой куб, у последнего включается свой источник), он стабильно включается и выключается. Я подозреваю, что проблема в том, что лазер активирует тот же куб, из которого подается.
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
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
 
public class Laser : MonoBehaviour {
 
    public GameObject lazer,particle;
    public bool cube;
    public bool active;
    Vector3 directionRay;
    RaycastHit hit;
    Transform obj,objLast;
 
    void Update () {
        if (active) {
            lazer.SetActive (true);
            particle.SetActive (true);
            directionRay = transform.TransformDirection (Vector3.forward);
            if (Physics.Raycast (transform.position, directionRay, out hit)) {
                lazer.transform.localScale = new Vector3 (lazer.transform.localScale.x, lazer.transform.localScale.y, hit.distance / transform.localScale.z);
                //obj = hit.transform;
                //if (!cube) {
                    if (hit.transform.gameObject.GetComponent<materials> ().laserCube)
                        hit.transform.gameObject.GetComponent<Laser> ().active = true;
                //}
            }
            if (cube)
                active = false;
        } else {
            lazer.SetActive (false);
            particle.SetActive (false);
        }
    }
}
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
20.01.2017, 16:17
Ответы с готовыми решениями:

Зачем при перегрузке оператора >> в параметр включать ссылку на объект, а не сам объект?
Зачем в параметры функции включать ссылку на объект: istream &amp;operator&gt;&gt;(istream &amp;stream, myclass &amp;ob) Почему не работает так:...

как сделать чтобы объект производного класса сам себя добавлял в список или массив указателей базового класса?
я хотел так, но программа просто падает void Student::add(Base** head) { cout &lt;&lt; &quot;I here&quot; &lt;&lt; endl; this-&gt;setName(); //все...

при вызове конструктора присваивания надо возвращать ссыль на объект или сам объект. Смысл? Значения нужных полей меняютмся и без этого!
Друзья! Обнаружил пробел в знаниях. Собсно, вопрос в теме. Дополню лишь: поля объекта меняются на нужные значения и безо всякого возврата...

2
1 / 1 / 1
Регистрация: 10.11.2016
Сообщений: 13
21.01.2017, 00:41  [ТС]
Скриншоты: изначальное состояние; куб перенаправляет лазер; куб продолжает подавать лазер, не получая его (проблема)
Миниатюры
При пускании луча объект реагирует сам на себя   При пускании луча объект реагирует сам на себя   При пускании луча объект реагирует сам на себя  

0
1 / 1 / 1
Регистрация: 10.11.2016
Сообщений: 13
21.01.2017, 00:48  [ТС]
Проблема решена. Код не доходил до отключения куба из-за того, что на стенах, на которые попадал лазер, не было скрипта "materials", к которому скрипт пытался получить доступ.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
21.01.2017, 00:48
Помогаю со студенческими работами здесь

Определите минимальную массу оболочки, при которой шар начнет поднимать сам себя
Сферическая оболочка воздушного шара сделана из материала, квадратный метр которого имеет массу 1 кг/м2. Шар наполнен гелием при нормальном...

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

Координаты точки попадания луча в объект
Добрый день. Кто подскажет как получить координаты точки попадания луча в объект?

Разработать модель, описывающую поведение луча света, падающего на объект
Разработать модель, описывающая поведение луча света, падающего на объект произвольной формы и имеет произвольный коэффициент пропускания. ...

Ключ сам на себя
нужно что бы поле из таблицы ссылалось на друге поле из этой же таблице. вот что сделал я uId int NOT NULL AUTO_INCREMENT, ...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Первый деплой
lagorue 16.01.2026
Не спеша развернул своё 1ое приложение в kubernetes. А дальше мне интересно создать 1фронтэнд приложения и 2 бэкэнд приложения развернуть 2 деплоя в кубере получится 2 сервиса и что-бы они. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит: токи, напряжения и их 1 и 2 производные при t = 0;. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru