forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Общие вопросы (http://forum.boolean.name/forumdisplay.php?f=166)
-   -   Вопросы от новичка (http://forum.boolean.name/showthread.php?t=15809)

WISHMASTER35 27.08.2013 01:28

Ответ: Вопросы от новичка
 
seaman, я не хочу его реализовывать. Мне просто нужен энумератор, который типа будет пробегать по 3д массиву. Надоело все время писать кучу вложенных циклов.

pax 27.08.2013 09:42

Ответ: Вопросы от новичка
 
Цитата:

Сообщение от WISHMASTER35 (Сообщение 265966)
seaman, я не хочу его реализовывать. Мне просто нужен энумератор, который типа будет пробегать по 3д массиву. Надоело все время писать кучу вложенных циклов.

Немного не понял как анонимный класс поможет сделать перебор многомерного массива. В C# есть анонимные классы без методов, они используются как промежуточные структуры данных.

PHP код:

var pax = new {name "PAX"age 30};

print(
pax.name); 

Имхо тебе просто надо написать метод расширения для IEnumerable

http://stackoverflow.com/questions/2...t-ienumerablet
один из ответов:
PHP код:

public static class ArrayExtensions
{
    public static 
IEnumerable<TToEnumerable<T>(this Array target)
    {
        foreach (var 
item in target)
            yield return (
T)item;
    }



WISHMASTER35 27.08.2013 17:37

Ответ: Вопросы от новичка
 
pax, в java можно было создавать анонимные классы с методами.
Например:
Код:

var obj = new ArrayExtensions() {
  public override void F() {...}
}

Можно было создать такое в самом методе, чтобы оно больше нигде не мешалось. Это было бы удобно.

pax 27.08.2013 18:15

Ответ: Вопросы от новичка
 
Трудно написать один раз, зато не трудно в каждом методе писать анонимные классы с вложенными методами? Я чет запутался.

WISHMASTER35 27.08.2013 20:36

Ответ: Вопросы от новичка
 
pax, зачем его в каждом методе писать? Это можно в одном методе написать, который будет возвращать объект анонимного класса.
И таких методов я хотел несколько, которые будят немного отличатся в реализации. Ну да черт с ним.

dsd 30.08.2013 01:11

Ответ: Вопросы от новичка
 
Бесплатная юнити поддерживает только sm 2.0?

pax 30.08.2013 08:56

Ответ: Вопросы от новичка
 
Цитата:

Сообщение от dsd (Сообщение 266097)
Бесплатная юнити поддерживает только sm 2.0?

Все поддерживает.
#pragma target 3.0 - по моему так

WISHMASTER35 01.09.2013 00:25

Ответ: Вопросы от новичка
 
Как определить объекты, которые мешают обзору главного объекта?
Т.е. камера кружится вокруг объекта и могут попадаться между камерой и объектом другие объекты, которые мешают обзору.

seaman 01.09.2013 02:18

Ответ: Вопросы от новичка
 
Пустить луч

WISHMASTER35 01.09.2013 13:13

Ответ: Вопросы от новичка
 
seaman, и сколько лучей мне пускать?
Как найти область которую объект занимает на экране?
Уж лучше искать пересечение этих областей.

pax 01.09.2013 13:55

Ответ: Вопросы от новичка
 
пускай не луч, а сферу в сторону от игрока до камеры.
http://docs.unity3d.com/Documentatio...phereCast.html

seaman 02.09.2013 01:21

Ответ: Вопросы от новичка
 
Цитата:

и сколько лучей мне пускать
5
Прекрасно давным-давно работает оклюжн камеры на этом:
УРОК

WISHMASTER35 02.09.2013 02:21

Ответ: Вопросы от новичка
 
seaman, ну в камере у меня тоже так коллизия работает.
Но чтобы определить перекрывает ли собой один объект, другой объект, лучше проверять 2д bounds.
Только не пойму как найти 2д описывающий квадрат.
Точнее не пойму как спроэцировать точку на экран в систему координа т GUI.
Код:

Vector3 min = bounds.min;
                Vector3 max = bounds.max;
                Vector3[] pts = new Vector3[] {
                        new Vector3(min.x, max.y, min.z),
                        new Vector3(min.x, max.y, max.z),
                        new Vector3(max.x, max.y, min.z),
                        new Vector3(max.x, max.y, max.z),
                       
                        new Vector3(min.x, min.y, min.z),
                        new Vector3(min.x, min.y, max.z),
                        new Vector3(max.x, min.y, min.z),
                        new Vector3(max.x, min.y, max.z),
                };
               
                foreach(Vector3 v in pts) {
                        Vector2 v2d = Camera.main.WorldToScreenPoint(v);
                        v2d = GUIUtility.ScreenToGUIPoint(v2d);
                        GUI.Box( new Rect(v2d.x, v2d.y, 10, 10), GUIContent.none );
                }

В результате боксы рисуются не на своих местах, а буд-то ScreenToGUIPoint не работает.

seaman 02.09.2013 02:36

Ответ: Вопросы от новичка
 
Цитата:

чтобы определить перекрывает ли собой один объект, другой объект
Но вопрос по перекрытию одного объекта другим не решаем без камеры. Т.е. нужно точка зрения - откуда смотришь. Отсюда - перекрывают, с другой точки зрения - нет. А если говорить о камере - никаких Bounds не надо. Все решается как написано по ссылке выше.

Или Вы хотите сделать свой собственный Occlusion Culling?

WISHMASTER35 02.09.2013 19:54

Ответ: Вопросы от новичка
 
Цитата:

Сообщение от seaman (Сообщение 266305)
Но вопрос по перекрытию одного объекта другим не решаем без камеры. Т.е. нужно точка зрения - откуда смотришь. Отсюда - перекрывают, с другой точки зрения - нет. А если говорить о камере - никаких Bounds не надо. Все решается как написано по ссылке выше.

Или Вы хотите сделать свой собственный Occlusion Culling?

Да я же с помощью камеры проецирую вершины на экран.
Да и не OcclusionCulling я делаю. Мне просто надо делать прозрачными объекты, которые закрывают главный объект - цель.


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

vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot