Среда, 14 Января 2026, 22:00

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

[ Новые сообщения · Игроделы · Правила · Поиск ]
Результаты поиска
seamanДата: Пятница, 04 Октября 2013, 18:46 | Сообщение # 601 | Тема: Школа Unity3D.
старожил
Сейчас нет на сайте
У меня как то не сложилось со здешней администрацией. Но вот сейчас админ 100% прав. Вам нельзя вести раздел школы. В другой теме Вы приветствуете неграмотность в уроках, что просто не простительно. Если человек не грамотен - он не может быть учителем. Если директор школы приветствует не грамотных учителей - он не может быть директором школы.
seamanДата: Пятница, 04 Октября 2013, 18:43 | Сообщение # 602 | Тема: Уроки по созданию RTS [Видеоуроки]
старожил
Сейчас нет на сайте
Цитата
пиши как хочешь! кому надо тот поймет! ты главное в сути не пудрись! СОВСЕМ!!!!

Если у Вас такой подход к урокам - админ прав. Вам НЕЛЬЗЯ вести раздел школы.
seamanДата: Пятница, 04 Октября 2013, 15:39 | Сообщение # 603 | Тема: Школа Unity3D.
старожил
Сейчас нет на сайте
Цитата
Гильдии, кланы, группы и целые форумы тоже не избежали этого - да делимся, да дарим, да отвечаем на вопросы - но в пределах реализации собственной значимости и "чего не жалко". Есть какая то ревность что ли - а вдруг у другого получится лучше с теми же исходными. Но эт конечно исключительно ИМХО! Просто пробовал по другому объективно описать ситуацию - и не вышло.

Имхо - не так.
1. Чем дальше в лес, тем больше дров. Т.е. чем дальше изучаешь предмет, тем все сложнее и сложнее. Если снять урок по основам может и новичок, то снять урок по чему-то действительно сложному - только профи.
2. Сложную тему раскрыть и описать парой слов не получится. Посмотрите уроки по Фотону у Кристиана. Они до конца еще неизвестно когда дойдут, а уже больше десятка часов видео. Вывод - на урок по сложной теме нужно потратить очень много времени.
3. Профи все заняты или своими проектами или работой. Снимать уроки у них просто нет времени, тем более "очень много времени".
Вывод.
Практически невозможно, чтобы нашлись профи, подобные тому же Кристиану, готовые тратить свое время бесплатно на снятие хороших уроков. Я вот снял уроки по Меканим только потому что был в отпуске и слегка заскучал (хотя я себя профи и не считаю smile , но времени все равно нет). Когда соберусь снять продолжение уже и не знаю.
Возможно Вам повезет, но что-то не верится.


Сообщение отредактировал seaman - Пятница, 04 Октября 2013, 15:39
seamanДата: Воскресенье, 29 Сентября 2013, 13:12 | Сообщение # 604 | Тема: Проблема с Unity3D
старожил
Сейчас нет на сайте
Ну понимаешь - только у тебя одного такая проблема. Никому эти файлы не нужно скачивать и устанавливать. Вывод? Что-то у тебя не так на компе.
Вот нашел что-то подобное: http://unity3d.ru/distribution/viewtopic.php?f=15&t=14417
Там Юнити версия одна, а кряк от другой версии. Возможно тут собака порылась?
seamanДата: Воскресенье, 29 Сентября 2013, 12:22 | Сообщение # 605 | Тема: Проблема с Unity3D
старожил
Сейчас нет на сайте
Давай я поищу за тебя:
fmodex.dll
fmod_editor.dll
Первые ссылки. Все отлично качается.
PS: весьма странно что в 4.2.1 они нужны. Еще более странно, что они при установке Юнити не поставились. У меня ощущение, что эта ошибка из-за чего то другого.
Спрошу еще раз - Вы не ставили FMOD Studio или FMOD Ex?
seamanДата: Воскресенье, 29 Сентября 2013, 10:03 | Сообщение # 606 | Тема: Проблема с Unity3D
старожил
Сейчас нет на сайте
У меня в Юнити нет таких файлов.
Я так понимаю Вы имеете в виду не Юнити, а эту программу: FMOD Studio
Ну и в чем проблема? Если программу угадал - скачиваете и устанавливаете. Если не угадал - в инете полно мест где лежат нужные файлы.
Откройте для себя Гугл!
seamanДата: Суббота, 28 Сентября 2013, 16:32 | Сообщение # 607 | Тема: Вопрос-[ответ] по Unity
старожил
Сейчас нет на сайте
http://www.forum.crossplatform.ru/index.php?showtopic=2560
http://sqlite.org/lang_aggfunc.html
seamanДата: Суббота, 28 Сентября 2013, 10:00 | Сообщение # 608 | Тема: Raycast, rigidbody и стрельба в юнити!
старожил
Сейчас нет на сайте
Цитата
я в Debug.DrawRay вывел луч, в scene его видно. А как можно сделать что бы он был виден и с той камеры которой управляю?

LineRenderer
seamanДата: Среда, 25 Сентября 2013, 20:07 | Сообщение # 609 | Тема: Наследование "на пальцах".
старожил
Сейчас нет на сайте
Цитата
не помню как называется, вроде инициализатор.

Мдя...
Лучше б не писал...
seamanДата: Воскресенье, 22 Сентября 2013, 22:42 | Сообщение # 610 | Тема: Наследование "на пальцах".
старожил
Сейчас нет на сайте
Смотря в каком языке. Шарп не поддерживает множественное наследование. Т.е. нельзя напрямую сделать "Динотабурет". Однако есть обходной маневр. В шарпе есть такая штука - "Интерфейс". Класс может реализовывать много разных интерфейсов.
Наиболее просто понять что такое интерфейс можно взглянув на какой-нибудь универсальный блок питания. Обычно у таких блоков шнур на конце которого несколько разных разъемов. Один можно воткнуть в мобильник, другой в какой-нибудь плейер. Эти разъемы и есть интерфейсы.
Интерфейс записывается так:
Код
public interface IName
{
       bool MyFunc(float par);
}

Т.е. подобно классу. Только у функций в нем нет тела (операторов, которые что-то делают). Также у них не может быть модификаторов доступа (public).
Тело функции Вы записываете в классе, который реализовывает этот интерфейс. Потому и говорят "реализовывает", а не наследует. У наследуемого класса функции уже что-то делают, у интерфейса только определена их сигнатура (т.е. имя, входные параметры и что возвращает). А что делать определяется в классе, реализующем интерфейс.
С одной стороны такая структура уменьшает повторное использование кода. Реализацию, даже если она одинаковая приходится писать во всех классах, реализующих интерфейс.
С другой стороны это все же позволяет имитировать множественное наследование.
Например у нас есть класс и интерфейс
Код
class Dino
{
       public virtual void Eat(float){}
}
interface ITaburet
{
       bool SitDown();
}

И есть классы наследующие от Dino и реализующий интерфейс табурета
Код
class DiplodokTab : Dino, ITaburet
{
    public bool SitDown(){return true;}
}

class TiranosaurTab : Dino, ITaburet
{
    public bool SitDown(){return false;}
}

Можно как в первом топике использовать все преимущества наследования и переопределить метод Eat. Можно с другой стороны где-то написать функцию, которая получает флаг - можно ли на нем сидеть так:
Код
public bool Sit(ITaburet myDino)
{
        return myDino.SitDown();
}

Почему можно? Потому что любой класс, который реализует интерфейс ITaburet обязан иметь функцию SitDown!
Тогда если мы в нее передадим экземпляр класса диплодок - она вернет "да", а если тиранозавр - вернет "нет".
PS: Как обычно слегка сумбурно, т.к. на ходу пишу.


Сообщение отредактировал seaman - Воскресенье, 22 Сентября 2013, 22:46
seamanДата: Пятница, 20 Сентября 2013, 23:36 | Сообщение # 611 | Тема: Как прикрепить lua к unity3d
старожил
Сейчас нет на сайте
Цитата
а нахрена?

Если есть масса наработок на Lua по фреймфорку игры, то смысл есть. Вот на Юнити3д.ру Вульф шоворит, что он именно из-за этого прицепил Луа к Юнити.
PS^ топикастеру советую обратиться к нему.
seamanДата: Пятница, 20 Сентября 2013, 14:37 | Сообщение # 612 | Тема: Вопрос-[ответ] по Unity
старожил
Сейчас нет на сайте
Цитата
Кто знает почему не работает деректива?

Потому что Вы не понимаете ее смысла. Скомпилируйте игру и запустите скомпилированный вариант.
seamanДата: Понедельник, 16 Сентября 2013, 11:32 | Сообщение # 613 | Тема: Наследование "на пальцах".
старожил
Сейчас нет на сайте
Наследование "на пальцах".

Все в школе изучали на биологии классы, отряды, семейства... Даже если Вы не помните что это такое, Вам должно быть понятно значение слова "Млекопитающие". Это животные, которые выкармливают детенышей молоком. Это их общая черта, которая отличает их от других классов. Можно вести класс:

Код
class Mlekopitajuchie
   {
            bool mleko = true;
            bool liveRod = true;
   }


второе что их отличает - они живородящие. Для этих двух отличий мы вводим две переменные, которое у всех млекопитающих true. У иных существ эти переменные false.

Классы делятся на отряды. Наследование!

У класса млекопитающих есть 20 отрядов. Всем этим отрядам присущи две указанные черты млекопитающих, но у каждого отряда есть свои какие-то отличительные черты.
Например хищники. Их отличительная особенность - они охотятся на других животных и питаются их мясом. В отличие от них насекомоядные понятно питаются насекомыми. Большинство грызунов питается травами, плодами и семенами растений, корнями и даже древесиной.
Соответственно можно перечислить возможные типы пищи:

Код
enum Food
   {
            Meat;
            Vegetable;
   ...
   }


И отличать отряды по этому признаку. Однако не нужно забывать, что все они не прекращают быть млекопитающими. Поэтому у них должны быть упомянутые выше две переменные, отличающие млекопитающих. Можно, конечно ввести кучу классов по числу отрядов и у них всех ввести те же самые переменные, что у класса "Млекопитающие". Однако выгоднее будет использовать уже написанный код. Для этого вводится понятие "наследование". Класс, который наследуется от другого класса включает в себя автоматом все переменные и методы этого класса. "Наследует" их.
Т.о. классы "Хищники" и грызуны будут:

Код
class Predator : Mlekopitajuchie
   {
           Food meal = Food.Meat;
   }
   class Rodent : Mlekopitajuchie
   {
           Food meal = Food.Vegetable;
   }


Наследование записывается так ": имя класса от которого наследуемся".
Как видим мы не указали переменные mleko и liveRod, однако мы спокойно можем их использовать и у классов Predator и Rodent - они их унаследовали от Mlekopitajuchie!
Аналогично можно определить все остальные классы млекопитающих.
Совершенно аналогично все и относительно функций. У млекопитающих можно ввести функцию "Кормление". В которой, например, прибавлять энергию детенышу. Все млекопитающие,- и хищники и грызуны будут иметь эту функцию!

Виртуальные функции. Полиморфизм!

Все млекопитающие питаются. Соответственно в класс можно ввести функцию Eat. Все млекопитающие в детстве питаются молоком. Поэтому в этой функции проверяем есть ли поблизости молоко. Если есть уменьшаем количество молока и прибавляем энергию млекопитающему. Это общее поведение для всех млекопитающих.

Код
void Eat()
   {
            if(milk > 0)
            {
                milk -= eatMilk;
                energy += ener;
            }
   }

Однако у каждого отряда в пищевом поведении взрослой особи есть свои особенности.
Поэтому в классе "Хищники" нужно изменить функцию Eat. В данном случае проверяем возраст особи и если он больше определенного значения вместо поиска молока начинаем искать мясо. Если же меньше этого значения = ищем молоко.

Код
void Eat()
   {
            if(age > minAge) eatMeat();
            else base.Eat();
   }


здесь видим новую запись - "base." - таким образом вызываются функции из класса от которого наследовались.

Спросите - а где виртуальные функции? Дело в том, что очень часто нам не важно какого конкретно отряда животное. Поэтому вместо параметра функции типа Predator можно передать Mlekopitajuchie. Все Predator являются также и Mlekopitajuchie. Поэтому даже если в функцию будет передано значение типа Predator - ошибки не будет. Однако если мы вдруг в такой функции вызовем функцию Eat, то будет вызвана функция из класса Mlekopitajuchie, хотя у нас на самом деле Predator. Хотелось бы, чтобы при этом вызывалась соответствующая переданному значению функция. Вот тут приходят на помощь виртуальные функции. Переопределим функции так:
"Млекопитающие"

Код
virtual void Eat()
   {
            if(milk > 0)
            {
                milk -= eatMilk;
                energy += ener;
            }
   }


"Хищники"

Код
override void Eat()
   {
            if(age > minAge) eatMeat();
            else base.Eat();
   }


Здесь в Млекопитающие - функция определена как виртуальная, а в Хищники - как переопределенная.
Если теперь мы введем функцию:

Код
void Proba(Mlekopitajuchie animal)
   {
            Eat();
   }


То внутри ее будет вызвана Eat, соответствующая тому, что мы передадим в качестве параметра. Если Хищник - то будет искать мясо, если Грызун, то растения.
Ощущаете удобство?


Сообщение отредактировал seaman - Понедельник, 16 Сентября 2013, 11:34
seamanДата: Понедельник, 16 Сентября 2013, 11:30 | Сообщение # 614 | Тема: Как все-таки сделать свою игрушку
старожил
Сейчас нет на сайте
Цитата
не очень подойдет для новичков.

А вот об этом я постоянно твержу. Подавляющее большинство новичков хотят сразу делать игры. Не хотят узнать основы. Я всем говорю - прочитайте пару статей по ООП, книжку для новичков по шарпу. Будет значительно проще! И вот такие основы основ не много времени и займут.
Я вот тут на другом форуме давненько написал коротенькую заметку для чайников по ООП. Час выложу сюда в форум. Может кому и пригодится.
seamanДата: Суббота, 14 Сентября 2013, 23:53 | Сообщение # 615 | Тема: Как все-таки сделать свою игрушку
старожил
Сейчас нет на сайте
Это Вы кому?
seamanДата: Суббота, 14 Сентября 2013, 23:17 | Сообщение # 616 | Тема: Как все-таки сделать свою игрушку
старожил
Сейчас нет на сайте
Совет всем "уроковаятелям". Пишите заранее как минимум коспектик урока. Лучше не конспектик, а полный текст. Не обязательно этот текст читать,- обязательно иметь его перед глазами, чтобы в случае заминки можно было глянуть что дальше говорить/делать. Не забывайте, что во всех программах записи есть пауза. В Камтасии можно просто остановить, вырезать свое блеяние и склеить со следующим куском.
Я не предлагаю полностью все делать без сучка и задоринки, но очевидные ляпы и заминки нужно убирать.
PS^ сам не без греха, но стараюсь smile
seamanДата: Среда, 11 Сентября 2013, 21:17 | Сообщение # 617 | Тема: Проигрывание анимации назад
старожил
Сейчас нет на сайте
Надо клип прокрутить в конец анимации. По умолчанию он в начале и при проигрывании назад, естественно ничего не проигрывается.
Код
AnimationState open = animation["Door_open"];
open .time = AnimationState.length;
animation["Door_open"].speed = -1;
animation.Play("Door_open");
DoorOpen = false;
seamanДата: Среда, 11 Сентября 2013, 14:16 | Сообщение # 618 | Тема: RayCast Tutorial
старожил
Сейчас нет на сайте
Чем пишешь уроки? Не знаю как в других прогах, а в Камтасии увеличить громкость очень просто. Плюс уменьшить шумы на звуке.
Есть еще вариант - говорить погромче.


Сообщение отредактировал seaman - Среда, 11 Сентября 2013, 14:17
seamanДата: Суббота, 07 Сентября 2013, 11:56 | Сообщение # 619 | Тема: Повернуть модель к модели
старожил
Сейчас нет на сайте
Цитата
У нее как бы смещается центр, поворачивается она не относительно своего центра, а относительно какой-то левой точки.

Значит пивот модели не в центре. Проще всего удочерить ее пустому gameObject, который предварительно разместить в центре модели. И вращать его.
seamanДата: Пятница, 06 Сентября 2013, 13:23 | Сообщение # 620 | Тема: Rigidbody
старожил
Сейчас нет на сайте
В мануале четко написано:
Цитата
All Mesh Colliders can collide with any primitive Collider. If your mesh is marked as Convex, then it can collide with other Mesh Colliders.
Поиск:

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