|
Unity Мультиплатформенный инструмент для разработки игр |
31.03.2012, 22:47
|
#796
|
ПроЭктировщик
Регистрация: 15.06.2011
Сообщений: 111
Написано 2 полезных сообщений (для 3 пользователей)
|
Ответ: Фак по Юнити.
pax, дико баговое нововведение, советую пока не связываться.
|
(Offline)
|
|
01.04.2012, 13:01
|
#797
|
ПроЭктировщик
Регистрация: 15.06.2011
Сообщений: 111
Написано 2 полезных сообщений (для 3 пользователей)
|
Ответ: Фак по Юнити.
Есть много однотипных (из одного прифаба) предметов. На всех повешен один и тот же скрипт.
Как из повешенного на них скрипта определить, что луч выпущенный из игрока, наведен именно на ЭТОТ предмет, и после нажатия определенной кнопки, удалиться именно ЭТОТ предмет.
|
(Offline)
|
|
01.04.2012, 13:19
|
#798
|
Элита
Регистрация: 16.01.2010
Адрес: Новосибирск
Сообщений: 2,157
Написано 502 полезных сообщений (для 1,012 пользователей)
|
Ответ: Фак по Юнити.
ввести
public static GameObject ObjInRay в скрипте игрока,
там же:
ObjInRay=hit.colider.gameobject;
а потом просто из ПОВЕШЕННОГО на ПЕРЕФРАБЫ скрипта проверить
if(this==имяскриптаплеера.ObjInRay){
if(Input.GetButton("del")) { удаляем нафиг его}
}
..так наверно
|
(Offline)
|
|
01.04.2012, 13:25
|
#799
|
Unity/C# кодер
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений (для 5,323 пользователей)
|
Ответ: Фак по Юнити.
Проще удалять из скрипта игрока
|
(Offline)
|
|
01.04.2012, 13:29
|
#800
|
ПроЭктировщик
Регистрация: 15.06.2011
Сообщений: 111
Написано 2 полезных сообщений (для 3 пользователей)
|
Ответ: Фак по Юнити.
pax, а как удалять предмет из скрипта игрока, на который наведен луч в данный момент? Можно определить имя или тег предмета, но если удалять по этим данным, то удалятся все предмет с этим тегом или именем со сцены.
|
(Offline)
|
|
01.04.2012, 13:34
|
#801
|
Бывалый
Регистрация: 24.05.2011
Адрес: Украина,Харьков
Сообщений: 890
Написано 359 полезных сообщений (для 880 пользователей)
|
Ответ: Фак по Юнити.
Ты же из игрока пускаешь луч и кастуешь. Вот то,что получил, то и удаляй.
__________________
Нам суждено построить мосты и храмы,которых никогда не существовало и не могло существовать в природе.
|
(Offline)
|
|
01.04.2012, 13:44
|
#802
|
Unity/C# кодер
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений (для 5,323 пользователей)
|
Ответ: Фак по Юнити.
Проверяй на наличие скрипта (GetComponent<ТипКомпонента>()) удаляй объект
|
(Offline)
|
|
01.04.2012, 13:47
|
#803
|
ПроЭктировщик
Регистрация: 15.06.2011
Сообщений: 111
Написано 2 полезных сообщений (для 3 пользователей)
|
Ответ: Фак по Юнити.
Сделал так:
Debug.DrawLine(transform.position, transform.forward, Color.green); Ray ray = new Ray(transform.position, transform.forward); RaycastHit hit;
if (Physics.Raycast(ray, out hit, 100)) { ObjInRay = hit.collider.gameObject; if (hit.collider.gameObject.tag == "dlt" && Input.GetKeyDown("g")) { Destroy (ObjInRay); } }
Если навести луч на предмет с тегом "dlt", а затем нажать "g", то этот предмет удалится со сцены.
Проверяй на наличие скрипта
|
pax, это первое с чего я начал, но в таком случае будут удалятся все объекты с этим скриптом.
|
(Offline)
|
|
01.04.2012, 18:55
|
#804
|
ПроЭктировщик
Регистрация: 15.06.2011
Сообщений: 111
Написано 2 полезных сообщений (для 3 пользователей)
|
Ответ: Фак по Юнити.
Почему в данном блоке boolean переменные не выполняются?
Ray ray = new Ray (mypos.position, mypos.forward); RaycastHit hit; if (Physics.Raycast(ray, out hit, 3)) { ObjInRay = hit.collider.gameObject; if (hit.collider.gameObject.tag == "weapon_01" && Input.GetKey("g")) { weapon_slot2 = true; weapon_slot1 = false; weapon_slot3 = false; weapon_01 = true; 01_picked = true; } }
Переменные bool задаются так например: public bool 01_picked = false;
А блок в Update();
|
(Offline)
|
|
01.04.2012, 19:13
|
#805
|
Бывалый
Регистрация: 21.12.2008
Адрес: UA
Сообщений: 878
Написано 105 полезных сообщений (для 357 пользователей)
|
Ответ: Фак по Юнити.
SaM_, потому что какое-то условие не выполняется. Ты уверен, что луч длиной 3 достает до какого-то объекта с твоим тегом weapon_01?
Как вписать текстуру в инспектор?
Пишу так
Rect rect = EditorGUILayout.BeginHorizontal();
EditorGUILayout.EndHorizontal();
rect.height = rect.width * ((float)tex.height/tex.width);
GUI.DrawTexture(rect, tex);
Но если дальше рисовать, то оно рисуется не после текстуры, а по ней. Надо как-то в GUILayout отступ сделать.
Т.е. отступить можно так GUILayout.Space
Но проблема в том что rect.height равно нулю при событии Layout.
Вот как прекрасно в две строчке решилась эта проблема
Rect rect = GUILayoutUtility.GetAspectRect((float)tex.height/tex.width);
GUI.DrawTexture(rect, tex);
|
(Offline)
|
|
01.04.2012, 19:55
|
#806
|
Бывалый
Регистрация: 21.12.2008
Адрес: UA
Сообщений: 878
Написано 105 полезных сообщений (для 357 пользователей)
|
Ответ: Фак по Юнити.
Теперь другая проблема. Надо в инспекторе сделать выбор тайла на текстуре-атласе. Хотел обрисовывать выбранный тайл линиями, но как нарисовать эти линии в инспекторе?
Хотя через GL рисует. GL доступен же в инди версии? А то я считал, что он только в про.
|
(Offline)
|
|
01.04.2012, 20:30
|
#807
|
ПроЭктировщик
Регистрация: 15.06.2011
Сообщений: 111
Написано 2 полезных сообщений (для 3 пользователей)
|
Ответ: Фак по Юнити.
WISHMASTER35, условие выполняется 100%. Если, как в предыдущем посте, вписать Destroy(GameObject); то выполнятся будет, если же назначать bool'у другое значение в данном блоке или просто вписать i=1, то выполнятся не будет. Почему?
|
(Offline)
|
|
01.04.2012, 21:55
|
#808
|
Бывалый
Регистрация: 21.12.2008
Адрес: UA
Сообщений: 878
Написано 105 полезных сообщений (для 357 пользователей)
|
Ответ: Фак по Юнити.
SaM_, от того, что ты написал в блоке ничего не изменится. Если оно конечно не влияет на результат твоих условий.
Вообще проверяй выполнение условий через Debug.log.
|
(Offline)
|
|
01.04.2012, 22:31
|
#809
|
ПроЭктировщик
Регистрация: 15.06.2011
Сообщений: 111
Написано 2 полезных сообщений (для 3 пользователей)
|
Ответ: Фак по Юнити.
Все перепроверил, должно работать. Подозреваю, что это очередной баг новой 3.5
...
Да, это баг новой unity. Проверил тот же скрипт на 3.2 - работает.
|
(Offline)
|
|
02.04.2012, 06:29
|
#810
|
Unity/C# кодер
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений (для 5,323 пользователей)
|
Сообщение от SaM_
Почему в данном блоке boolean переменные не выполняются?
|
самый более менее правильный способ обработки, который снизит нагрузку на физику:
Ray ray = new Ray (mypos.position, mypos.forward); RaycastHit hit;
if (Input.GetKeyDown("g") && Physics.Raycast(ray, out hit, 3)) { ObjInRay = hit.collider.gameObject; if (hit.collider.gameObject.tag == "weapon_01") { weapon_slot2 = true; weapon_slot1 = false; weapon_slot3 = false; weapon_01 = true; 01_picked = true; } }
Сообщение от WISHMASTER35
Теперь другая проблема. Надо в инспекторе сделать выбор тайла на текстуре-атласе. Хотел обрисовывать выбранный тайл линиями, но как нарисовать эти линии в инспекторе?
Хотя через GL рисует. GL доступен же в инди версии? А то я считал, что он только в про.
|
Handles.DrawLine(), GUI.Label с необходимым стилем и размером.
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 22:15.
|