Насчет стрельбы райкастами, в основном ее используют для моментального прохождения пули. Например как в контре когда стреляешь и т.д. Скорость пуль очень быстрая, поэтому она должна убить все что находиться на ее пути. Если двигать пулю каждый кадр, то может возникнуть ситуация, когда пуля пролетит. @noTformaT
Что вот это такое? if(Hit.transform) Вы вообще хоть чуток понимаете в программировании? Что такое if? Что должно быть в его скобках? Что такое transform? Можно ли его использовать как условие if?
Там должно быть логическое условие, т.е. bool выражение. transform - это не логическое выражение. Поэтому Юнити пытается воспринять его хотя бы как метод, который возвращает да/нет. Но у него это, естественно не получается. Вот он и пишет:
Quote
The member `UnityEngine.Component.transform' cannot be used as method or delegate
Подумайте, что Вы хотели проверить этим if? Что transform определенный, или что он вообще существует? Или что?
Что значит "сделать"? Куда луч попал, тот коллайдер и будет. Может Вы хотите проверить попал ли он в ГГ? Тогда назначьте тег "Player" ему и проверяйте тег go в который попал луч.
Что значит "сделать"? Куда луч попал, тот коллайдер и будет. Может Вы хотите проверить попал ли он в ГГ? Тогда назначьте тег "Player" ему и проверяйте тег go в который попал луч.
Не так. Вообще тут видно, что Вы совсем новичок в программировании. Вы думаете, что 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")
ЗЫ: Что-то я сегодня слишком добрый . Не люблю писать такие очевидные (для меня) вещи.
Сообщение отредактировал seaman - Среда, 01 Февраля 2012, 22:43
я одну страницу прочел, и столько уже ворчания на ней. Ясен пень человек
Quote (seaman)
Вообще тут видно, что Вы совсем новичок в программировании.
иначе что ему делать в этой теме?. Вы бы свои знания направляли больше на, то чтобы пояснить, а не отчитывать незнакомого человека, который и не хамил даже. Всем бы пользы было больше, особенно вам. Без обид, спасибо что вы отвечаете новичкам (особенно последний пост), но можно и поспокойнее же быть .
Почитал сегодня документацию по Юнити, немного попрактиковал..И почувствовал что Юнити становится мне симпатичен, пропорционально тому как становится раздражающей цена за Про версию А у меня такой вопрос к тем у кого уже есть опыт работы с юнити . Вопрос теоретический. Я не в теме, поэтому могу путаться в терминах, постараюсь изясняться на пальцах. Меня интересют возможности движка. Поясняю: Есть объект сфера - здоровенная планета на весь экран висит себе в космосе и вертится. Аля X-com. Планируется обтянуть ее текстурой. Детализированной уникальной. Поверхность в основном однообразная пустыня, но с рельефом некоторым. Плавный зум камеры к самой поверхности не планируется, это было бы слишком жирно наверно). Но хотелось бы иметь возможность оказаться на поверхности и там побродить.
Осуществим ли следующий вариант: При действии когда я хочу оказаться близко к поверхности (на высоте птичьего полета) или побродить по самой поверхности, я тыкаю в планету и генерируется карта (сцена) по заданным условиям. Я хочу оказаться в конкретной точке планеты, ткнув к примеру в плато я должен оказаться на плато, а ткнув в кратер - оказаться в кратере и воткнуть там флажок или бросить банку из под пива. (Помню например в СorelBryce был такой инструмент который генерировал рельеф местности по ч/б картинке "вид сверху", но мб и другие методы ведь). То есть не создавать заранее 100500 сцен для 100500 регионов, а генерировать сцену, но так, чтобы ткнув по кратеру во второй раз, я оказался там же. Еще такое условие чтобы оказавшись снова в старом добром кратере я востречал там, воткнутый мною ранее флажок и пивную банку!) Повторюсь -почти все одноцветная пустыня. Только текстура планеты уникальна, а текстуру земли на поверхности хотелось бы генерировать как и ландшафт. Может ли кстати движок Юнити генерировать бесконечные уровни без швов?(DeltaForce мог, и не только он ). Это необязательно - достаточно прочто бооольшого уровня. Как у Unity с открытыми пространствами? Все вышеописанное подразумевается под самые что ни на есть скромные системные требования. В идеале хотелось бы иметь вариант запускаемый на тачпадах и хороших телефонах.
Знатоки, прокоментируйте пжл. Какие еще есть подходы в решении таких задач?
Сообщение отредактировал Самоделкин - Четверг, 02 Февраля 2012, 11:50
Почитал сегодня документацию по Юнити, немного попрактиковал..И почувствовал что Юнити становится мне симпатичен, пропорционально тому как становится раздражающей цена за Про версию А у меня такой вопрос к тем у кого уже есть опыт работы с юнити . Вопрос теоретический. Я не в теме, поэтому могу путаться в терминах, постараюсь изясняться на пальцах. Меня интересют возможности движка. Поясняю: Есть объект сфера - здоровенная планета на весь экран висит себе в космосе и вертится. Аля X-com. Планируется обтянуть ее текстурой. Детализированной уникальной. Поверхность в основном однообразная пустыня, но с рельефом некоторым. Плавный зум камеры к самой поверхности не планируется, это было бы слишком жирно наверно). Но хотелось бы иметь возможность оказаться на поверхности и там побродить.
Осуществим ли следующий вариант: При действии когда я хочу оказаться близко к поверхности (на высоте птичьего полета) или побродить по самой поверхности, я тыкаю в планету и генерируется карта (сцена) по заданным условиям. Я хочу оказаться в конкретной точке планеты, ткнув к примеру в плато я должен оказаться на плато, а ткнув в кратер - оказаться в кратере и воткнуть там флажок или бросить банку из под пива. (Помню например в СorelBryce был такой инструмент который генерировал рельеф местности по ч/б картинке "вид сверху", но мб и другие методы ведь). То есть не создавать заранее 100500 сцен для 100500 регионов, а генерировать сцену, но так, чтобы ткнув по кратеру во второй раз, я оказался там же. Еще такое условие чтобы оказавшись снова в старом добром кратере я востречал там, воткнутый мною ранее флажок и пивную банку!) Повторюсь -почти все одноцветная пустыня. Только текстура планеты уникальна, а текстуру земли на поверхности хотелось бы генерировать как и ландшафт. Может ли кстати движок Юнити генерировать бесконечные уровни без швов?(DeltaForce мог, и не только он ). Это необязательно - достаточно прочто бооольшого уровня. Как у Unity с открытыми пространствами? Все вышеописанное подразумевается под самые что ни на есть скромные системные требования. В идеале хотелось бы иметь вариант запускаемый на тачпадах и хороших телефонах.
Цена оправдана. Генерация больших уровней является задачей, а не предметом ограниченности движка. На юнити не редко собирали клоны майнкрафта. Это к вопросу о генерации ландшафтов и открытых пространств. Оправданно ли это? Незнаю.
Ответ на вопрос как можно сделать беконечный уровень без швов - использование кусков ( chunks ) или ячеек ( cells ) - условно говоря первый метод используется в майнкрафте, второй метод в morrowind. Ни одна машина не выдержит "бесконечных ландшафтов", нужно оптимизировать и делить свой ландшафт подгружая ту часть, на которой находится к примеру игрок. Это если совсем утрированно. Большее вряд ли кто скажет так как это очень комплексная и индивидуальная задача. ACTORS - мой фреймворк на Unity Until We Die - игра над которой работаю
Сообщение отредактировал pixeye - Четверг, 02 Февраля 2012, 12:20
нужно оптимизировать и делить свой ландшафт подгружая ту часть, на которой находится к примеру игрок. Это если совсем утрированно.
Ну я и подразумевал нечто подобное. Никаких зарослей, рек и т.п - только простейший ландшафт. Древние шутеры прошлого века могли, а современные нет что-ли? Просто игрок бежит а уровень в двадцати метрах впереди генерируется. А как насчет той штуки что я упоминал, о генерации ландшафта с помощью ч/б изображения? Bump-maping по схожему принципу работает. Может есть в Юнити для ландшафта такой инструмент? В одном ландшафтном 3D редакторе точно был. В моровинде города и леса рукотворные, в майнкрафте каждый кубик на счету (на десятки метров вниз) - об их координатах нельза забывать ни на секунду. А у меня будет большая ч/б текстура для всей планеты просто(или нарезка из маленьких) и в зависимости от координат мной указанных, движок будет брать нужный кусок этой текстуры и генерить по ней упрощенную модель ландшафта в поле видимости. Я потусовался на поверхности немного - ушел. Все улетучилось. Не пойму в чем может быть колосальная нагрузка в этом случае?
Сообщение отредактировал Самоделкин - Четверг, 02 Февраля 2012, 14:10
А как насчет той штуки что я упоминал, о генерации ландшафта с помощью ч/б изображения? Bump-maping по схожему принципу работает. Может есть в Юнити для ландшафта такой инструмент?
Nekit_Aut, Оо... Странное решение если честно, а почему не создавать пули?
Странным решением будет создавать пули.
Предположим ты делаешь...пулемет выстреливающий 3000 патронов в минуту. А если таких персонажей с пулеметами будет три? И что? будешь создавать 9000 патронов?
Завтра ты делаешь стратегию. Например космическую. И у тебя +200 кораблей в баталии. Из них у 50 высокоскорострельные автоматические пушки для подавления враж истребителей. Тобишь стреляют они оч много и быстро. Будешь создавать на сцену тыщи патронов?
Или проще сделать визуальное отображение выстрела партикалами, а по рейкасту уже сделать непосредственно просчет выстрела? ( причем это тебя никак не ущемляет, ты так же можешь настраивать вероятности промахов, точность, физические воздействия, да хоть дырку в месте попадания, или партика взрыва на космокорабле, что немудренно если ты знаешь конечную точку лучша) ACTORS - мой фреймворк на Unity Until We Die - игра над которой работаю
Кто-нибудь знает как можно в Unity сделать так, чтобы обрабатывалось только то что перед глазами игрока? То есть чтобы если на уровне много объектов, он не тормозил?
не делать огромных объектов. Любой движок делает frustum culling (это то, что ты хочешь сделать). Только если у тебя огромный объект и какая-то маленькая часть попадает в камеру, то обрабатываться будет весь объект. Ну а чтобы движок не тормозил не делайте объектов из миллионов поликов, не используйте в сцене миллионы материалов, включайте батчинг, не используйте много коллайдеров и т.д. и т.п.