Проблема с Instantiate...

Программирование на Юнити.

Проблема с Instantiate...

Сообщение Hellcaller 18 янв 2012, 16:07

Пытаюсь сделать механику на подобии майнкрафт классик:
HTML код для вашего блога :
Код: Выделить всё
<script language='javascript' type="text/javascript"> document.write("<iframe marginheight='0' src='http://unity3d.ru/distribution/player.php?url=http://ukcan.com.ua/test.unity3d&w=640&h=480&t=false&preview=1' height='"+(480+30)+"' width='640' frameborder='0' scrolling='no'></iframe>"); </script>

все почти работает но иногда кубы спавнятся внутри уже созданных кубов... то ли Юнити плохо нормали читает то ли [curved_hands]
вот снипет:
Синтаксис:
Используется csharp
        void Update () {               
                if(Input.GetMouseButtonDown(0)){    
                        RaycastHit hit;
                        Ray ray = Camera.main.ScreenPointToRay (Input.mousePosition);
                        if(Physics.Raycast(ray, out hit,10f)){
                                hit.point = new Vector3(
                                Mathf.Round(hit.point.x / gridx) * gridx,
                                Mathf.Round(hit.point.y / gridy) * gridy,
                                Mathf.Round(hit.point.z/ gridz) * gridz);
                                if (hit.transform.gameObject.tag == "buildBlock") {
                                        Instantiate(block, hit.point, Quaternion.LookRotation(hit.normal));
                                }
                        }
                }
         }
 
Opposition Forces
Мои поделки на Unity
Hellcaller
UNIт
 
Сообщения: 70
Зарегистрирован: 28 май 2010, 22:59

Re: Проблема с Instantiate...

Сообщение Golandez 18 янв 2012, 16:58

Хз, что такое grid, но вы не думали, что округляя значение до целого вы можете получить немного не то значение, которое ожидаете? Не проще ли через боундсы определять дельту для инстанса?
P.S. как работает демка так и не понял.
Ты нужен только тогда,когда нужен.(С)
Сказать спасибо
Аватара пользователя
Golandez
Пилигрим
 
Сообщения: 1637
Зарегистрирован: 06 авг 2009, 13:55
Откуда: Харьков
Skype: lestardigital

Re: Проблема с Instantiate...

Сообщение Hellcaller 19 янв 2012, 11:18

исправил демку левая мышь ставить блок правая убирать. упростил код:
Синтаксис:
Используется csharp
void Update () {               
                if(Input.GetMouseButtonDown(0)){    
                        RaycastHit hit;
                        Ray ray = Camera.main.ScreenPointToRay (Input.mousePosition);
                        if(Physics.Raycast(ray, out hit)){
                                hit.point = new Vector3(
                                Mathf.Round(hit.point.x),
                                Mathf.Round(hit.point.y),
                                Mathf.Round(hit.point.z));
                                if ((hit.transform.gameObject.tag == "buildBlock")||(hit.transform.gameObject.tag == "terrain")) {
                                        Instantiate(block, hit.point, Quaternion.LookRotation(hit.normal));
                                }
                        }
                }
       }
 
Opposition Forces
Мои поделки на Unity
Hellcaller
UNIт
 
Сообщения: 70
Зарегистрирован: 28 май 2010, 22:59


Вернуться в Скрипты

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 6