Создание двух одинаковых обьектов одновременно
| |
nekroo98 | Дата: Суббота, 12 Октября 2013, 10:55 | Сообщение # 1 |
почетный гость
Сейчас нет на сайте
| Может я чего то не понимаю, но разве так должно быть? distance_to_point увеличивает значение при движении по +х\+у и уменьшает по -х\-у? При этом изначальное значение в точке, откуда идет расчер - примерно = 140750.
Как нормально измерить дистанцию от точки до точки?
Сообщение отредактировал nekroo98 - Четверг, 26 Марта 2015, 12:41 |
|
| |
beril | Дата: Суббота, 12 Октября 2013, 12:43 | Сообщение # 2 |
Я не ленивый, я — энергосберегающий
Сейчас нет на сайте
| Возможно я ошибаюсь. Можно использовать return
Накодил? Убери за собой! Инвентарь в Unity(UI) Инвентарь в Unity(GUI)
|
|
| |
King | Дата: Суббота, 12 Октября 2013, 14:19 | Сообщение # 3 |
участник
Сейчас нет на сайте
| Честно говоря, ничего не понял. distance_to_point(x,y) показывает расстояние от точки в которой находится объект, в котором она вызвана, до точки указанной в аргументах. Что при отрицательных значениях координат, что при нормальных, функция всегда нормально показывает расстояние от x1|y1 до x2|y2. Наверное я что то недопонял.
Nothing is true, everything is permitted. Shadows Games
|
|
| |
FadeBaker | Дата: Суббота, 12 Октября 2013, 15:14 | Сообщение # 4 |
JavaSE Game Developer
Сейчас нет на сайте
| Попробуй point_distance(x1, y1, x2, y2), может, больше соответствует требованиям.
Уроки по GM Minecraft 2D на GM — Мои проекты — Blood Harvest [2D] — Original Blood Harvest [2D]: Remastered Edition Adventure Craft [2D] — Sandbox Space Shock [2D] — Scroll Shooter Intel® Core™ i5-3570K 3.40 GHz, 8 GB RAM, GeForce GTX 750 Ti, Monitor: LG 23EA63V-P.
|
|
| |
nekroo98 | Дата: Суббота, 12 Октября 2013, 16:06 | Сообщение # 5 |
почетный гость
Сейчас нет на сайте
| Цитата Fade ( ) Попробуй point_distance(x1, y1, x2, y2), может, больше соответствует требованиям. Действительно, эта функция работает как нужно. Странно, ведь вроде разницы то нет.
|
|
| |
FadeBaker | Дата: Суббота, 12 Октября 2013, 17:11 | Сообщение # 6 |
JavaSE Game Developer
Сейчас нет на сайте
| Цитата nekroo98 ( ) Странно, ведь вроде разницы то нет. Цитата King ( ) расстояние от точки в которой находится объект А эта функция принимает непосредственно сами координаты точек.
Уроки по GM Minecraft 2D на GM — Мои проекты — Blood Harvest [2D] — Original Blood Harvest [2D]: Remastered Edition Adventure Craft [2D] — Sandbox Space Shock [2D] — Scroll Shooter Intel® Core™ i5-3570K 3.40 GHz, 8 GB RAM, GeForce GTX 750 Ti, Monitor: LG 23EA63V-P.
|
|
| |
nekroo98 | Дата: Понедельник, 14 Октября 2013, 22:02 | Сообщение # 7 |
почетный гость
Сейчас нет на сайте
| Не буду создавать новую тему, спрошу тут. Наверняка многие видели, как в различных играх отрисовывается урон. Когда из персонажа "вылетают" цифры.
Так вот, я создаю обьект и присваиваю ему значение урона, он показывается некоторое время и уничтожается. Все классно.
Но. Если в этот момент будет получен ещё урон, значение "первого" просто заменится и он продолжит лететь, пока не уничтожится. Проблема, как я понимаю, в том, что мы создаем один и тот же обьект с разными значениями.
Внимание, вопрос : Как добиться отображения всех "чисел" одновременно?
|
|
| |
Gavolot | Дата: Понедельник, 14 Октября 2013, 22:17 | Сообщение # 8 |
Последователь Тени
Сейчас нет на сайте
| Так создавай просто новый объект, так проще и дешевле других методов. Во всяком случае в гм. Любые массивы в гм обрабатываются дороже чем новый объект, а стандартными дс листами делать, тоже как-то бредновато. Добавлено (14.10.2013, 22:17) --------------------------------------------- Точнее создавай новый экзмемпляр объекта, который уничтожится с алармом. Грузить игру не должно.
В общем что-то делаю, но пока не пойму ни как :) Тень - выражение основной сущности человека.
|
|
| |
nekroo98 | Дата: Понедельник, 14 Октября 2013, 23:08 | Сообщение # 9 |
почетный гость
Сейчас нет на сайте
| Цитата Gavolot ( ) Так создавай просто новый объект, так проще и дешевле других методов. Во всяком случае в гм. Любые массивы в гм обрабатываются дороже чем новый объект, а стандартными дс листами делать, тоже как-то бредновато.
На пальцах обьясни как это выглядит с кодом. Сейчас у меня примерно следущее Код if input_damage > 0 {блаблабла, расчет урона, instance_create(x,y,damage_drawer); damage_drawer.kolichestvo_yrona = полученный в расчетах дамаг; input_damage = 0;} Получаешь дамаг - создается обьект. Если во время жизни этого обьекта снова получаешь дамаг, новый обьект не создается, заменяется значение дамага в первом и все.
В самом обьекте-рисовалке Код alarm[0]=90; в аларме {instance_destroy()}
Сообщение отредактировал nekroo98 - Понедельник, 14 Октября 2013, 23:27 |
|
| |
FadeBaker | Дата: Вторник, 15 Октября 2013, 00:35 | Сообщение # 10 |
JavaSE Game Developer
Сейчас нет на сайте
| Create: Step: Код y -= 1; //По своему усмотрению if ((ticks += 1) > room_speed * 2) instance_destroy(); Draw: Код draw_text(x, y, text); //Точно не помню функцию рисования текста, но, по-моему, так
Там, где нужно создать: Код dmg = instance_create(x, y, твойОбъект); dmg.text = string(урон);
Уроки по GM Minecraft 2D на GM — Мои проекты — Blood Harvest [2D] — Original Blood Harvest [2D]: Remastered Edition Adventure Craft [2D] — Sandbox Space Shock [2D] — Scroll Shooter Intel® Core™ i5-3570K 3.40 GHz, 8 GB RAM, GeForce GTX 750 Ti, Monitor: LG 23EA63V-P.
Сообщение отредактировал Fade - Вторник, 15 Октября 2013, 00:36 |
|
| |
nekroo98 | Дата: Вторник, 15 Октября 2013, 02:18 | Сообщение # 11 |
почетный гость
Сейчас нет на сайте
| А что это изменит? Я немного не правильно обрисовал проблему. Обьект то новый создается, только значение урона меняется в ОБОИХ, т.е. в новом и в старом, будет НОВОЕ значение. Вот можете посмотреть пример. На код и ошибки не обращайте внимания, я специально подкрутил для наглядности В общем, уточню требование: необходимо, чтобы создавалось 2 и более обьектов, с разными значениями урона. ТЫК
|
|
| |
SalahAdDin | Дата: Вторник, 15 Октября 2013, 16:25 | Сообщение # 12 |
постоянный участник
Сейчас нет на сайте
| Задавай значение переменной в криэйт нового. Он, криэйт выполняется один раз. А вообще дешевле написать скрипт чем создавать обьект. К слову.
Фотошоп это не сложно. Немного теории, полезной на практике: Работа с наложением текстур Рисуем без планшета
|
|
| |
nekroo98 | Дата: Вторник, 15 Октября 2013, 20:42 | Сообщение # 13 |
почетный гость
Сейчас нет на сайте
| Цитата Задавай значение переменной в криэйт нового. Он, криэйт выполняется один раз. А вообще дешевле написать скрипт чем создавать обьект. К слову.
Спасибо. В криэйте так сделать неполучится, так как сначала создается обьект, потом обрабатывается его событие "Create", а уже потом ему извне что-то присваивается.
Так что пишем в Криэйте alarm[0]=1; И уже в аларме то, что нам надо.
Спасибо за идею, как то недодумался до такой фигни
Сообщение отредактировал nekroo98 - Четверг, 17 Октября 2013, 10:31 |
|
| |
SalahAdDin | Дата: Суббота, 26 Октября 2013, 13:19 | Сообщение # 14 |
постоянный участник
Сейчас нет на сайте
| instance_create().n=10 Все там прекрасно задается.
Фотошоп это не сложно. Немного теории, полезной на практике: Работа с наложением текстур Рисуем без планшета
|
|
| |
nekroo98 | Дата: Четверг, 26 Марта 2015, 08:30 | Сообщение # 15 |
почетный гость
Сейчас нет на сайте
| Некропостинга время!
Если событие происходит одновременно с 2 и более обьектами, цифра урона вылетает из всех одинаковая. Как с этим быть и что делать?
|
|
| |
EfimovMax | Дата: Четверг, 26 Марта 2015, 11:39 | Сообщение # 16 |
заслуженный участник
Сейчас нет на сайте
| Цитата nekroo98 ( ) Если событие происходит одновременно с 2 и более обьектами, цифра урона вылетает из всех одинаковая. Как с этим быть и что делать? Если я правильно понял проблему. У тебя событие "выпадения" цифр где происходит? Если код написан в игроке, то естественно он не будет правильно работать. Засунь его во врагов.
Текущий проект: The Experiment ☭
Выпущенные проекты Steam: Princess.Loot.Pixel.Again Princess.Loot.Pixel.Again x2 Dungetris
|
|
| |
nekroo98 | Дата: Четверг, 26 Марта 2015, 12:20 | Сообщение # 17 |
почетный гость
Сейчас нет на сайте
| Ок, обьясняю. В каждом герое и враге есть одинаковый скрипт Код instance_create(x-10,y-20,simple_damage_summ_drawer);simple_damage_summ_drawer.damage=(тут формула расчета дамага) Далее, в созданном обьекте simple_damage_summ_drawer и отрисовывается дамаг. (это как бы вылетающая из врага циферка)
Если урон идет по одному врагу за 1 шаг - все ок. Но, если урон наносится двум и более врагов за 1 шаг, значение simple_damage_summ_drawer.damage меняется во всех обьектах - рисовальщиках дамага.
Выглядит вот так: Урон только на одного чувака в голубой робе:
А вот если зацепить атакой их обоих - вылетает значение урона по ангелу, причем из обоих. Сам урон наносится корректно:
Если провести 2 атаки подряд по одному чуваку - тоже все корректно, значения разные:
Проблема именно в одном шаге и нескольких обьектах-рисовальщиках, созданных одновременно.
Сообщение отредактировал nekroo98 - Четверг, 26 Марта 2015, 12:43 |
|
| |
EfimovMax | Дата: Четверг, 26 Марта 2015, 12:51 | Сообщение # 18 |
заслуженный участник
Сейчас нет на сайте
| Потому что твой код обращается ко всем созданным инстанциям. Меняй на это:
Код NewDamDraw=instance_create(x-10,y-20,simple_damage_summ_drawer) NewDamDraw.damage=(тут формула расчета дамага)
Первой строкой создаётся объект, Id которого мы запоминаем в NewDamDraw, второй строкой идёт обращение к нему по Id (то есть конкретно к новосозданному объекту).
Текущий проект: The Experiment ☭
Выпущенные проекты Steam: Princess.Loot.Pixel.Again Princess.Loot.Pixel.Again x2 Dungetris
Сообщение отредактировал EfimovMax - Четверг, 26 Марта 2015, 12:55 |
|
| |
nekroo98 | Дата: Четверг, 26 Марта 2015, 13:01 | Сообщение # 19 |
почетный гость
Сейчас нет на сайте
| Даладнаааааа, наконецто все правильно как задумано.
А можно по подробнее? NewDamDraw это просто переменная, где хранится ид созданного обьекта или типо того?
|
|
| |
EfimovMax | Дата: Четверг, 26 Марта 2015, 13:15 | Сообщение # 20 |
заслуженный участник
Сейчас нет на сайте
| Цитата nekroo98 ( ) А можно по подробнее? NewDamDraw это просто переменная, где хранится ид созданного обьекта или типо того? Да, просто переменная. У каждого объекта в GM есть свой идентификатор (Id). Посмотреть на него можно в редакторе уровней, наведя курсором на объект - внизу появятся его координаты, имя и Id. Если в коде нужно обратиться к какому-то определённому объекту, можно писать его идентификатор (inst_21A65E55.speed=12). Если же нужно получить Id объекта, пишем objTest.id. Как я и написал ранее, NewDamDraw запоминает Id только что созданного объекта, и после мы меняем значение damage только у него.
Текущий проект: The Experiment ☭
Выпущенные проекты Steam: Princess.Loot.Pixel.Again Princess.Loot.Pixel.Again x2 Dungetris
|
|
| |
|