Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Программирование игр для компьютеров > Unity

Unity Мультиплатформенный инструмент для разработки игр

Ответ
 
Опции темы
Старый 31.03.2012, 22:47   #796
SaM_
ПроЭктировщик
 
Аватар для SaM_
 
Регистрация: 15.06.2011
Сообщений: 111
Написано 2 полезных сообщений
(для 3 пользователей)
Ответ: Фак по Юнити.

pax, дико баговое нововведение, советую пока не связываться.
(Offline)
 
Ответить с цитированием
Старый 01.04.2012, 13:01   #797
SaM_
ПроЭктировщик
 
Аватар для SaM_
 
Регистрация: 15.06.2011
Сообщений: 111
Написано 2 полезных сообщений
(для 3 пользователей)
Ответ: Фак по Юнити.

Есть много однотипных (из одного прифаба) предметов. На всех повешен один и тот же скрипт.
Как из повешенного на них скрипта определить, что луч выпущенный из игрока, наведен именно на ЭТОТ предмет, и после нажатия определенной кнопки, удалиться именно ЭТОТ предмет.
(Offline)
 
Ответить с цитированием
Старый 01.04.2012, 13:19   #798
RegIon
Элита
 
Аватар для RegIon
 
Регистрация: 16.01.2010
Адрес: Новосибирск
Сообщений: 2,157
Написано 502 полезных сообщений
(для 1,012 пользователей)
Ответ: Фак по Юнити.

ввести
public static GameObject ObjInRay в скрипте игрока,
там же:
ObjInRay=hit.colider.gameobject;
а потом просто из ПОВЕШЕННОГО на ПЕРЕФРАБЫ скрипта проверить
if(this==имяскриптаплеера.ObjInRay){
if(Input.GetButton("del")) { удаляем нафиг его}
}

..так наверно
__________________
Сайт: http://iexpo.ml
(Offline)
 
Ответить с цитированием
Старый 01.04.2012, 13:25   #799
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений
(для 5,323 пользователей)
Ответ: Фак по Юнити.

Проще удалять из скрипта игрока
__________________
Blitz3d to Unity Wiki
(Offline)
 
Ответить с цитированием
Старый 01.04.2012, 13:29   #800
SaM_
ПроЭктировщик
 
Аватар для SaM_
 
Регистрация: 15.06.2011
Сообщений: 111
Написано 2 полезных сообщений
(для 3 пользователей)
Ответ: Фак по Юнити.

pax, а как удалять предмет из скрипта игрока, на который наведен луч в данный момент? Можно определить имя или тег предмета, но если удалять по этим данным, то удалятся все предмет с этим тегом или именем со сцены.
(Offline)
 
Ответить с цитированием
Старый 01.04.2012, 13:34   #801
Lestar
Бывалый
 
Аватар для Lestar
 
Регистрация: 24.05.2011
Адрес: Украина,Харьков
Сообщений: 890
Написано 359 полезных сообщений
(для 880 пользователей)
Ответ: Фак по Юнити.

Ты же из игрока пускаешь луч и кастуешь. Вот то,что получил, то и удаляй.
__________________
Нам суждено построить мосты и храмы,которых никогда не существовало и не могло существовать в природе.
(Offline)
 
Ответить с цитированием
Старый 01.04.2012, 13:44   #802
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений
(для 5,323 пользователей)
Ответ: Фак по Юнити.

Проверяй на наличие скрипта (GetComponent<ТипКомпонента>()) удаляй объект
__________________
Blitz3d to Unity Wiki
(Offline)
 
Ответить с цитированием
Старый 01.04.2012, 13:47   #803
SaM_
ПроЭктировщик
 
Аватар для SaM_
 
Регистрация: 15.06.2011
Сообщений: 111
Написано 2 полезных сообщений
(для 3 пользователей)
Ответ: Фак по Юнити.

Сделал так:
Debug.DrawLine(transform.positiontransform.forwardColor.green); 
Ray ray = new Ray(transform.positiontransform.forward);
RaycastHit hit;

if (
Physics.Raycast(rayout hit100)) 
{
    
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
SaM_
ПроЭктировщик
 
Аватар для SaM_
 
Регистрация: 15.06.2011
Сообщений: 111
Написано 2 полезных сообщений
(для 3 пользователей)
Ответ: Фак по Юнити.

Почему в данном блоке boolean переменные не выполняются?
Ray ray = new Ray (mypos.positionmypos.forward);
RaycastHit hit;
if (
Physics.Raycast(rayout hit3)) 
{
    
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
WISHMASTER35
Бывалый
 
Аватар для WISHMASTER35
 
Регистрация: 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
WISHMASTER35
Бывалый
 
Аватар для WISHMASTER35
 
Регистрация: 21.12.2008
Адрес: UA
Сообщений: 878
Написано 105 полезных сообщений
(для 357 пользователей)
Ответ: Фак по Юнити.

Теперь другая проблема. Надо в инспекторе сделать выбор тайла на текстуре-атласе. Хотел обрисовывать выбранный тайл линиями, но как нарисовать эти линии в инспекторе?

Хотя через GL рисует. GL доступен же в инди версии? А то я считал, что он только в про.
(Offline)
 
Ответить с цитированием
Старый 01.04.2012, 20:30   #807
SaM_
ПроЭктировщик
 
Аватар для SaM_
 
Регистрация: 15.06.2011
Сообщений: 111
Написано 2 полезных сообщений
(для 3 пользователей)
Ответ: Фак по Юнити.

WISHMASTER35, условие выполняется 100%. Если, как в предыдущем посте, вписать Destroy(GameObject); то выполнятся будет, если же назначать bool'у другое значение в данном блоке или просто вписать i=1, то выполнятся не будет. Почему?
(Offline)
 
Ответить с цитированием
Старый 01.04.2012, 21:55   #808
WISHMASTER35
Бывалый
 
Аватар для WISHMASTER35
 
Регистрация: 21.12.2008
Адрес: UA
Сообщений: 878
Написано 105 полезных сообщений
(для 357 пользователей)
Ответ: Фак по Юнити.

SaM_, от того, что ты написал в блоке ничего не изменится. Если оно конечно не влияет на результат твоих условий.
Вообще проверяй выполнение условий через Debug.log.
(Offline)
 
Ответить с цитированием
Старый 01.04.2012, 22:31   #809
SaM_
ПроЭктировщик
 
Аватар для SaM_
 
Регистрация: 15.06.2011
Сообщений: 111
Написано 2 полезных сообщений
(для 3 пользователей)
Ответ: Фак по Юнити.

Все перепроверил, должно работать. Подозреваю, что это очередной баг новой 3.5

...

Да, это баг новой unity. Проверил тот же скрипт на 3.2 - работает.
(Offline)
 
Ответить с цитированием
Старый 02.04.2012, 06:29   #810
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений
(для 5,323 пользователей)
Сообщение от SaM_ Посмотреть сообщение
Почему в данном блоке boolean переменные не выполняются?
самый более менее правильный способ обработки, который снизит нагрузку на физику:
Ray ray = new Ray (mypos.positionmypos.forward);
RaycastHit hit;

if (
Input.GetKeyDown("g") && Physics.Raycast(rayout hit3)) 
{
    
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 с необходимым стилем и размером.
__________________
Blitz3d to Unity Wiki
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
SaM_ (02.04.2012)
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Часовой пояс GMT +4, время: 16:00.


vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com