Tromlen, ну.. вообще должна быть у каждого своя. я же, например, делал исходник с сундуком (недавно тема была) так, что сундуки можно было плодить, и шмотки там везде разные, и с каждым работать можно отдельно.. скорее всего надо сделать пару дополнительных проверок.. если пришлёшь свой исходник, я гляну. может даже и сейчас. - Доброе утро, Агент Пи!
Tromlen, а вот попробуйте переставить в не вашем исходнике хаотично спайс. вообще наугад. 100500 раз перемешайте, чтобы не поставить примерно так, как он по ним ходит. и будет видно, что нихрена он не бегает к ближайшему, а бегает к хрен знает какому.. не всегда ближайшему. по крайней мере у меня так получилось, я особо и не старался. то к первому поехал, то аж к последнему.. и пересекал другие спайсовые поля, радостно харвестируя с них. так что надо подумать над тем, как что-то изменить.. но это уже не сейчас. поехал я пока с работы домой. - Доброе утро, Агент Пи!
примерно объясняю, что происходит в строках 10-12: 10 строка - событие "если вызвана функция harvest", естественно, выполняется по вызову функции. 11 строка - запускается цикл FOR, который от первого до последнего проверит все наши спрайты Spice, отсортирует их по формуле distance(Harvester.X, Harvester.Y, Spice.X, Spice.Y), т.е. вычисление расстояния между двумя точками - текущим положением харвестра и спрайта Spice, который сейчас проверяется, а так же всё это отсортируется по возрастанию (Ascending). 12 строка - loopindex (т.е. переменная цикла FOR; по идее должна быть в диапазоне от 1 до Spice.Count) сравнивается как раз с этим самым Spice.Count, если это так, то мы двигаемся к спрайту. Проверка нужна для того, чтобы начать движение после того, как будут проверены все спрайты Spice, а не после проверки каждого дёргаться..
я объяснил, что там указано, не проверял, должно ли это работать, и как оно работает.. может теперь тебе больше будет понятно, а мне вот пора дальше продолжать работать..
Добавлено (22.07.2013, 14:43) --------------------------------------------- вообще, по идее результатом работы 11й строки должно стать то, что мы должны получить объект Spice, до которого расстояние - наименьшее. и тогда в строке 12 поехать именно к нему..
Xantr, offset - это смещение, отклонение. таким образом происходит проверка перекрытия (overlap) со смещением. например offset y+5 будет искать перекрытие в точке, на 5 пикселей ниже, чем реально есть расположен спрайт.
по поводу свободной маски в С2 тоже разобрался. - Доброе утро, Агент Пи!
Сообщение отредактировал Nick_Rimer - Понедельник, 22 Июля 2013, 12:24
Xantr, фак-фак-фак, когда я уже запомню, что ты про С2 задаёшь вопрос?! сейчас установлю и посмотрю, как это делается там. возможно, отвечу после обеда, если никто не опередит меня раньше.. прости. постоянно я забываю о С2.. - Доброе утро, Агент Пи!
Xantr, в поведении Physics можно поставить маску Custom, чуть ниже этого свойства есть свойство Custom Collision, у него надо нажать Edit. А там в редакторе точками делай свою маску, как тебе будет угодно. потренируйся.
- Доброе утро, Агент Пи!
Сообщение отредактировал Nick_Rimer - Понедельник, 22 Июля 2013, 11:46
Ilyko96, кстати, хорошее решение! в общем принципе то же, что и у меня, но только вместо второго спрайта - расширенная маска коллизии - Доброе утро, Агент Пи!
и хватит уже трогать эту тему, не надо сюда больше ничего писать!! тебе одного предупреждения за некропост, видимо, мало..
вообще рекомендую учить английский язык и пользоваться им, и никакие переводы на "русскую языку" аглицкихъ продуктов не понадобятся. к тому же для пользования программой не требуется офигенное знание, нужно лишь немножко желания и опыт. заведи ручной словарь или поставь электронный словарь типа Лингво на компьютер (кстати, можно пользоваться и лингво-онлайн). и так рекомендую поступать с каждой программой. со временем накопится словарный запас достаточный, чтобы не пользоваться и словарями, за редким исключением.
Tromlen, да. прости за твою же цитату, но "тупишь" вот тут есть более свежая версия - r2, доступная достаточно давно; указана дата 2012-02-05 качай на здоровье, и будет тебе щасцье! - Доброе утро, Агент Пи!
VladimirPutin, тебе тут верно всё говорят. я делаю такое через кадры анимации спрайта. в спрайте создаются несколько кадров анимации, сама анимация отключается, т.е. проигрываться она не будет, а кадр выполняется рандомом. такой же метод с выбором layout. короче, рандом рулит
вот пример, если вообще ничего не понятно. если в первом layout будешь жать на квадрат, он будет менять цвета, на самом деле это разные кадры анимации (от 1 до 8), выбираемые рандомно (сам посмотришь анимацию). если в первом layout нажмёшь на прямоугольник справа внизу, то тебя перенесёт на один из других layout (от 2 до 5), опять же - рандомно. в layout со 2го по 5й клик по красному квадрату отнесёт тебя на 1й layout. - Доброе утро, Агент Пи!
Сообщение отредактировал Nick_Rimer - Суббота, 20 Июля 2013, 23:04
madsen, как я и обещал, я модифицировал исходник с сундуками, хотя в нём не так сильно всё изменилось..
красный квадратик - типа гг. управление 8Direction Behavior (только управление не стрелочками, а WSAD) подошли к сундуку, перекрыв его, появляется в левом верхнем углу надпись, сколько там шмоток как и раньше открываем сундук пробелом, стрелка вниз - положить вещь, стрелка вверх - взять вещь. стрелками влево и вправо выбираешь вещь, с которой хочешь "поработать".
как ты увидишь, у меня в исходнике уже расставлено 6 сундуков, каждый из которых уже заполнен своими вещами. чтобы добавить свои сундуки, просто перетягивай их мышкой с панели Objects в рабочую область Layout Editor и назначай переменным, которые отвечают за шмот внутри, свои значения. короче, всё просто. из событий прибавилось лишь скрытие и появление надписи в левом верхнем углу.
Xantr, я уже догадался.. и пока я что-то не понимаю, что сделать, чтобы от этого избавиться.. может ещё кто знает.. я подумаю.
Добавлено (19.07.2013, 17:02) --------------------------------------------- я сделал вот такую хитрую штуку:
пояснения: Physics стоит на объектах ball и bottom у ball есть приватная переменная a спрайт big_ball не имеет никаких поведений, только одно единственное свойство Invisible on start, этот спрайт - копия спрайта ball (цвет изменён, чтобы не спутать), только - очень важно - он на несколько пикселей больше, чем ball. у ball - Width = Height = 82, у bigball - Width = Height = 85
что вышло - смотреть здесь если поиграть с Width и Height спрайта bigball, можно получить разный результат, пока не получишь нужный.
это выпендрёж через задницу, но, быть может, оно сработает и поможет тебе - Доброе утро, Агент Пи!
Сообщение отредактировал Nick_Rimer - Пятница, 19 Июля 2013, 17:02
Xantr, ну вот я тоже сделал мячик с Physics, маска столкновений Ellipse мячик падает на твёрдый пол и несколько раз от него отскакивает. и получилось по событиям так:
как видно, trigger once нам уже не нужен
Добавлено (19.07.2013, 16:08) --------------------------------------------- мде.. сделал ща пол наклонным, пока отскакивает - всё классно. когда катится - играет барабанное соло слипкнот.. trigger once не помогает. надо подумать..
- Доброе утро, Агент Пи!
Сообщение отредактировал Nick_Rimer - Пятница, 19 Июля 2013, 16:05