Воскресенье, 17 Ноября 2024, 01:36

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
Вопрос-[ответ] по Unity
QWER56Дата: Понедельник, 09 Августа 2010, 10:58 | Сообщение # 1
старожил
Сейчас нет на сайте
Вопрос-[Ответ] по Unity3d

  • База скриптов Unity3d
  • Курс Уроков по Unity 3D от Alcatraz

    ConsMark - поисковик по интернет магазинам.

    Сообщение отредактировал QWER56 - Вторник, 26 Июля 2011, 20:54
  • Nekit_AutДата: Среда, 01 Февраля 2012, 16:35 | Сообщение # 1501
    The Dizziness - Man
    Сейчас нет на сайте
    Quote (SnakeR)
    Nekit_Aut, Оо... Странное решение если честно, а почему не создавать пули?

    Так удобнее...


    SnakeRДата: Среда, 01 Февраля 2012, 16:40 | Сообщение # 1502
    постоянный участник
    Сейчас нет на сайте
    Nekit_Aut, в чем удобство если не секрет?

    Unity3D Developer
    Ваш лучший помощник при разработке в Unity3D
    noTformaTДата: Среда, 01 Февраля 2012, 16:43 | Сообщение # 1503
    Ukrainian independent game developer
    Сейчас нет на сайте
    Насчет стрельбы райкастами, в основном ее используют для моментального прохождения пули. Например как в контре когда стреляешь и т.д. Скорость пуль очень быстрая, поэтому она должна убить все что находиться на ее пути. Если двигать пулю каждый кадр, то может возникнуть ситуация, когда пуля пролетит.

    @noTformaT
    seamanДата: Среда, 01 Февраля 2012, 18:58 | Сообщение # 1504
    старожил
    Сейчас нет на сайте
    Что вот это такое?
    if(Hit.transform)
    Вы вообще хоть чуток понимаете в программировании?
    Что такое if? Что должно быть в его скобках? Что такое transform? Можно ли его использовать как условие if?
    Nekit_AutДата: Среда, 01 Февраля 2012, 19:44 | Сообщение # 1505
    The Dizziness - Man
    Сейчас нет на сайте
    Quote (seaman)
    Что такое if?

    Проверка... Можно аналогично сказать по русски "если".
    Quote (seaman)
    Что должно быть в его скобках?

    В скобках то, что должно быть "если".
    Quote (seaman)
    Что такое transform?

    Основной компонент в объекте. С его помощью можно изменять позицию, поворот и масштаб...
    Quote (seaman)
    Можно ли его использовать как условие if?

    Эммм... Вроде да... Но в этом я могу ошибаться.


    seamanДата: Среда, 01 Февраля 2012, 22:11 | Сообщение # 1506
    старожил
    Сейчас нет на сайте
    Quote
    В скобках то, что должно быть "если".

    Там должно быть логическое условие, т.е. bool выражение. transform - это не логическое выражение. Поэтому Юнити пытается воспринять его хотя бы как метод, который возвращает да/нет. Но у него это, естественно не получается. Вот он и пишет:
    Quote
    The member `UnityEngine.Component.transform' cannot be used as method or delegate

    Подумайте, что Вы хотели проверить этим if? Что transform определенный, или что он вообще существует? Или что?
    Nekit_AutДата: Среда, 01 Февраля 2012, 22:13 | Сообщение # 1507
    The Dizziness - Man
    Сейчас нет на сайте
    Quote (seaman)
    Подумайте, что Вы хотели проверить этим if? Что transform определенный, или что он вообще существует? Или что?

    Столкновение райкаста с объектом. Хотел сделать этим объектом гг...


    seamanДата: Среда, 01 Февраля 2012, 22:22 | Сообщение # 1508
    старожил
    Сейчас нет на сайте
    Quote
    Столкновение райкаста с объектом.

    Тогда что по Вашему делает этот if?
    Code
    if(Physics.Raycast(transform.position, directionRay, out Hit, laungdh))

    Что возвращает Physics.Raycast? Смотрим мануал и видим:
    Quote
    Returns
    boolean - True when the ray intersects any collider, otherwise false.

    Т.е. "да" - если пущенный Вами луч столкнулся сколлайдером. Разве это не "Столкновение райкаста с объектом."?


    Сообщение отредактировал seaman - Среда, 01 Февраля 2012, 22:22
    Nekit_AutДата: Среда, 01 Февраля 2012, 22:24 | Сообщение # 1509
    The Dizziness - Man
    Сейчас нет на сайте
    seaman, А можно сделать этот коллайдер - коллайдером гг?

    seamanДата: Среда, 01 Февраля 2012, 22:27 | Сообщение # 1510
    старожил
    Сейчас нет на сайте
    Что значит "сделать"? Куда луч попал, тот коллайдер и будет. Может Вы хотите проверить попал ли он в ГГ? Тогда назначьте тег "Player" ему и проверяйте тег go в который попал луч.
    Nekit_AutДата: Среда, 01 Февраля 2012, 22:29 | Сообщение # 1511
    The Dizziness - Man
    Сейчас нет на сайте
    Quote (seaman)
    Т.е. "да" - если пущенный Вами луч столкнулся сколлайдером. Разве это не "Столкновение райкаста с объектом."?

    Кажется я немного понял... Может, не так, но...
    А если мне поставить не out Hit, а Hit(Новая переменная GameObject, которая будет привязана к игроку)

    Добавлено (01.02.2012, 22:29)
    ---------------------------------------------

    Quote (seaman)
    Что значит "сделать"? Куда луч попал, тот коллайдер и будет. Может Вы хотите проверить попал ли он в ГГ? Тогда назначьте тег "Player" ему и проверяйте тег go в который попал луч.

    Попробую... Но не сейчас...


    seamanДата: Среда, 01 Февраля 2012, 22:42 | Сообщение # 1512
    старожил
    Сейчас нет на сайте
    Не так.
    Вообще тут видно, что Вы совсем новичок в программировании. Вы думаете, что out тут поставили просто так? out показывает, что этот параметр возвращается из функции. Зачем так? Потому что обычно функция возвращает только одно значение. А в данном случае как мы уже знаем это уже занято.
    Physics.Raycast - возвращает "да", если луч во что-то ударился. Однако нам нужно получить еще информацию от движка - во что ударился луч, в какой точке, и т.д. Вот для этого и придумали параметры функции с модификатором out. В данном случае Physics.Raycast в параметре hit возвращает все что нужно.
    Все это написано в мануале:
    Physics.Raycast
    Правда не для новичков в программировании.
    Так что, увы, out убрать нельзя. Работать не будет. Однако этот hit НУЖНО использовать для получения информации о том во что ударился луч. Он для этого и предназначен. Смотрим в мануале - что он в себе содержит:
    RaycastHit
    Видим, что он содержит transform, который Вы пытались использовать. А у любого transform есть:
    tag
    Т.е. берем:
    Hit.transform.tag
    и сравниваем его с "Player". У ГГ ставим тег Player. Т.о. будем определять ТОЛЬКО попадание луча в ГГ^
    Code
    if(Physics.Raycast(transform.position, directionRay, out Hit, laungdh) && Hit.transform.tag == "Player")

    ЗЫ: Что-то я сегодня слишком добрый biggrin . Не люблю писать такие очевидные (для меня) вещи.


    Сообщение отредактировал seaman - Среда, 01 Февраля 2012, 22:43
    Nekit_AutДата: Четверг, 02 Февраля 2012, 08:59 | Сообщение # 1513
    The Dizziness - Man
    Сейчас нет на сайте
    Quote (seaman)
    Вообще тут видно, что Вы совсем новичок в программировании.

    Вы угадали)
    Quote (seaman)
    ЗЫ: Что-то я сегодня слишком добрый . Не люблю писать такие очевидные (для меня) вещи.

    Сппсибо))) Попробую)


    СамоделкинДата: Четверг, 02 Февраля 2012, 11:46 | Сообщение # 1514
    участник
    Сейчас нет на сайте
    Уважаемый seaman,


    Почитал сегодня документацию по Юнити, немного попрактиковал..И почувствовал что Юнити становится мне симпатичен, пропорционально тому как становится раздражающей цена за Про версию biggrin
    А у меня такой вопрос к тем у кого уже есть опыт работы с юнити . Вопрос теоретический. Я не в теме, поэтому могу путаться в терминах, постараюсь изясняться на пальцах. Меня интересют возможности движка. Поясняю:
    Есть объект сфера - здоровенная планета на весь экран висит себе в космосе и вертится. Аля X-com. Планируется обтянуть ее текстурой. Детализированной уникальной. Поверхность в основном однообразная пустыня, но с рельефом некоторым. Плавный зум камеры к самой поверхности не планируется, это было бы слишком жирно наверно). Но хотелось бы иметь возможность оказаться на поверхности и там побродить.

    Осуществим ли следующий вариант: При действии когда я хочу оказаться близко к поверхности (на высоте птичьего полета) или побродить по самой поверхности, я тыкаю в планету и генерируется карта (сцена) по заданным условиям. Я хочу оказаться в конкретной точке планеты, ткнув к примеру в плато я должен оказаться на плато, а ткнув в кратер - оказаться в кратере и воткнуть там флажок или бросить банку из под пива.
    (Помню например в СorelBryce был такой инструмент который генерировал рельеф местности по ч/б картинке "вид сверху", но мб и другие методы ведь).
    То есть не создавать заранее 100500 сцен для 100500 регионов, а генерировать сцену, но так, чтобы ткнув по кратеру во второй раз, я оказался там же. Еще такое условие чтобы оказавшись снова в старом добром кратере я востречал там, воткнутый мною ранее флажок и пивную банку!)
    Повторюсь -почти все одноцветная пустыня. Только текстура планеты уникальна, а текстуру земли на поверхности хотелось бы генерировать как и ландшафт.
    Может ли кстати движок Юнити генерировать бесконечные уровни без швов?(DeltaForce мог, и не только он ). Это необязательно - достаточно прочто бооольшого уровня. Как у Unity с открытыми пространствами?
    Все вышеописанное подразумевается под самые что ни на есть скромные системные требования. В идеале хотелось бы иметь вариант запускаемый на тачпадах и хороших телефонах.

    Знатоки, прокоментируйте пжл. Какие еще есть подходы в решении таких задач?


    Сообщение отредактировал Самоделкин - Четверг, 02 Февраля 2012, 11:50
    pixeyeДата: Четверг, 02 Февраля 2012, 12:19 | Сообщение # 1515
    Red Winter Software
    Сейчас нет на сайте
    Quote (Самоделкин)
    Почитал сегодня документацию по Юнити, немного попрактиковал..И почувствовал что Юнити становится мне симпатичен, пропорционально тому как становится раздражающей цена за Про версию
    А у меня такой вопрос к тем у кого уже есть опыт работы с юнити . Вопрос теоретический. Я не в теме, поэтому могу путаться в терминах, постараюсь изясняться на пальцах. Меня интересют возможности движка. Поясняю:
    Есть объект сфера - здоровенная планета на весь экран висит себе в космосе и вертится. Аля X-com. Планируется обтянуть ее текстурой. Детализированной уникальной. Поверхность в основном однообразная пустыня, но с рельефом некоторым. Плавный зум камеры к самой поверхности не планируется, это было бы слишком жирно наверно). Но хотелось бы иметь возможность оказаться на поверхности и там побродить.

    Осуществим ли следующий вариант: При действии когда я хочу оказаться близко к поверхности (на высоте птичьего полета) или побродить по самой поверхности, я тыкаю в планету и генерируется карта (сцена) по заданным условиям. Я хочу оказаться в конкретной точке планеты, ткнув к примеру в плато я должен оказаться на плато, а ткнув в кратер - оказаться в кратере и воткнуть там флажок или бросить банку из под пива.
    (Помню например в СorelBryce был такой инструмент который генерировал рельеф местности по ч/б картинке "вид сверху", но мб и другие методы ведь).
    То есть не создавать заранее 100500 сцен для 100500 регионов, а генерировать сцену, но так, чтобы ткнув по кратеру во второй раз, я оказался там же. Еще такое условие чтобы оказавшись снова в старом добром кратере я востречал там, воткнутый мною ранее флажок и пивную банку!)
    Повторюсь -почти все одноцветная пустыня. Только текстура планеты уникальна, а текстуру земли на поверхности хотелось бы генерировать как и ландшафт.
    Может ли кстати движок Юнити генерировать бесконечные уровни без швов?(DeltaForce мог, и не только он ). Это необязательно - достаточно прочто бооольшого уровня. Как у Unity с открытыми пространствами?
    Все вышеописанное подразумевается под самые что ни на есть скромные системные требования. В идеале хотелось бы иметь вариант запускаемый на тачпадах и хороших телефонах.


    Цена оправдана. Генерация больших уровней является задачей, а не предметом ограниченности движка. На юнити не редко собирали клоны майнкрафта. Это к вопросу о генерации ландшафтов и открытых пространств. Оправданно ли это? Незнаю.

    Ответ на вопрос как можно сделать беконечный уровень без швов - использование кусков ( chunks ) или ячеек ( cells ) - условно говоря первый метод используется в майнкрафте, второй метод в morrowind. Ни одна машина не выдержит "бесконечных ландшафтов", нужно оптимизировать и делить свой ландшафт подгружая ту часть, на которой находится к примеру игрок. Это если совсем утрированно.
    Большее вряд ли кто скажет так как это очень комплексная и индивидуальная задача.


    ACTORS - мой фреймворк на Unity
    Until We Die - игра над которой работаю



    Сообщение отредактировал pixeye - Четверг, 02 Февраля 2012, 12:20
    СамоделкинДата: Четверг, 02 Февраля 2012, 13:57 | Сообщение # 1516
    участник
    Сейчас нет на сайте
    Quote (pixeye)
    нужно оптимизировать и делить свой ландшафт подгружая ту часть, на которой находится к примеру игрок. Это если совсем утрированно.

    Ну я и подразумевал нечто подобное. Никаких зарослей, рек и т.п - только простейший ландшафт. Древние шутеры прошлого века могли, а современные нет что-ли? Просто игрок бежит а уровень в двадцати метрах впереди генерируется.
    А как насчет той штуки что я упоминал, о генерации ландшафта с помощью ч/б изображения? Bump-maping по схожему принципу работает. Может есть в Юнити для ландшафта такой инструмент? В одном ландшафтном 3D редакторе точно был.
    В моровинде города и леса рукотворные, в майнкрафте каждый кубик на счету (на десятки метров вниз) - об их координатах нельза забывать ни на секунду.
    А у меня будет большая ч/б текстура для всей планеты просто(или нарезка из маленьких) и в зависимости от координат мной указанных, движок будет брать нужный кусок этой текстуры и генерить по ней упрощенную модель ландшафта в поле видимости. Я потусовался на поверхности немного - ушел. Все улетучилось. Не пойму в чем может быть колосальная нагрузка в этом случае?


    Сообщение отредактировал Самоделкин - Четверг, 02 Февраля 2012, 14:10
    pixeyeДата: Четверг, 02 Февраля 2012, 14:14 | Сообщение # 1517
    Red Winter Software
    Сейчас нет на сайте
    Quote (Самоделкин)
    А как насчет той штуки что я упоминал, о генерации ландшафта с помощью ч/б изображения? Bump-maping по схожему принципу работает. Может есть в Юнити для ландшафта такой инструмент?


    http://www.youtube.com/watch?v=IJ6gN3K-Ieg

    http://forum.unity3d.com/threads/21263-Import-Heightmap-HowTo-or-Tutorial

    Heightmap насколько известно стандартная фишка unity - находится в terrain


    ACTORS - мой фреймворк на Unity
    Until We Die - игра над которой работаю



    Сообщение отредактировал pixeye - Четверг, 02 Февраля 2012, 14:16
    MadMax52Дата: Пятница, 03 Февраля 2012, 17:47 | Сообщение # 1518
    99% багов - бесплатно!
    Сейчас нет на сайте
    Кто-нибудь знает как можно в Unity сделать так, чтобы обрабатывалось только то что перед глазами игрока? То есть чтобы если на уровне много объектов, он не тормозил?

    Живи в свое удовольствие и оставь после себя жирный труп.
    © Барт Симпсон
    pixeyeДата: Пятница, 03 Февраля 2012, 19:47 | Сообщение # 1519
    Red Winter Software
    Сейчас нет на сайте
    Quote (SnakeR)
    Nekit_Aut, Оо... Странное решение если честно, а почему не создавать пули?

    Странным решением будет создавать пули.

    Предположим ты делаешь...пулемет выстреливающий 3000 патронов в минуту. А если таких персонажей с пулеметами будет три? И что? будешь создавать 9000 патронов?

    Завтра ты делаешь стратегию. Например космическую. И у тебя +200 кораблей в баталии. Из них у 50 высокоскорострельные автоматические пушки для подавления враж истребителей. Тобишь стреляют они оч много и быстро. Будешь создавать на сцену тыщи патронов?

    Или проще сделать визуальное отображение выстрела партикалами, а по рейкасту уже сделать непосредственно просчет выстрела? ( причем это тебя никак не ущемляет, ты так же можешь настраивать вероятности промахов, точность, физические воздействия, да хоть дырку в месте попадания, или партика взрыва на космокорабле, что немудренно если ты знаешь конечную точку лучша)


    ACTORS - мой фреймворк на Unity
    Until We Die - игра над которой работаю

    seamanДата: Суббота, 04 Февраля 2012, 12:08 | Сообщение # 1520
    старожил
    Сейчас нет на сайте
    Quote
    Кто-нибудь знает как можно в Unity сделать так, чтобы обрабатывалось только то что перед глазами игрока? То есть чтобы если на уровне много объектов, он не тормозил?

    не делать огромных объектов. Любой движок делает frustum culling (это то, что ты хочешь сделать). Только если у тебя огромный объект и какая-то маленькая часть попадает в камеру, то обрабатываться будет весь объект.
    Ну а чтобы движок не тормозил не делайте объектов из миллионов поликов, не используйте в сцене миллионы материалов, включайте батчинг, не используйте много коллайдеров и т.д. и т.п.
    Поиск:

    Все права сохранены. GcUp.ru © 2008-2024 Рейтинг