Суббота, 27 Апреля 2024, 03:17

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

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 3 из 5
  • «
  • 1
  • 2
  • 3
  • 4
  • 5
  • »
Форум игроделов » Записи участника » HSP [84]
Результаты поиска
HSPДата: Среда, 19 Февраля 2014, 16:50 | Сообщение # 41 | Тема: Деактивация определённых объектов
почетный гость
Сейчас нет на сайте
maksim1221232, будет, с чего бы ему не работать?
HSPДата: Среда, 19 Февраля 2014, 16:47 | Сообщение # 42 | Тема: Деактивация определённых объектов
почетный гость
Сейчас нет на сайте
instance_activate_region(left,top,width,height,inside) активируем регион в котором находится обьект

position_destroy(x,y) удаляем все обьекты в позиции x y


Сообщение отредактировал HSP - Среда, 19 Февраля 2014, 16:48
HSPДата: Среда, 19 Февраля 2014, 16:38 | Сообщение # 43 | Тема: Деактивация определённых объектов
почетный гость
Сейчас нет на сайте
LunarPixel, сам в игре использую этот код, так как некоторые обьекты выключать нельзя (всякие контроллы, которые не двигаются) за пределами вида
HSPДата: Среда, 19 Февраля 2014, 16:28 | Сообщение # 44 | Тема: Деактивация определённых объектов
почетный гость
Сейчас нет на сайте
Код
instance_deactivate_object(object0); //отключить все экземпляры object0
instance_activate_region(view_xview[0],view_yview[0],view_wview[0],view_hview[0],1); // активировать все в виде0

Добавлено (19.02.2014, 16:28)
---------------------------------------------
Вот так попробуй

Сообщение отредактировал HSP - Среда, 19 Февраля 2014, 16:28
HSPДата: Среда, 19 Февраля 2014, 01:51 | Сообщение # 45 | Тема: Экземпляр объекта
почетный гость
Сейчас нет на сайте
zzzzza, ах да, плюсик, хотел поставить, но от радости забыл про плюсик biggrin

Добавлено (19.02.2014, 01:51)
---------------------------------------------
Через 7 дней

HSPДата: Вторник, 18 Февраля 2014, 21:45 | Сообщение # 46 | Тема: Экземпляр объекта
почетный гость
Сейчас нет на сайте
zzzzza,
HSPДата: Вторник, 18 Февраля 2014, 20:11 | Сообщение # 47 | Тема: Нужна помощь по сохранению патронов.
почетный гость
Сейчас нет на сайте
Понял, удачи в обучении, если что пиши на форуме или мне в лс, поможем чем сможем
HSPДата: Вторник, 18 Февраля 2014, 19:10 | Сообщение # 48 | Тема: Нужна помощь по сохранению патронов.
почетный гость
Сейчас нет на сайте
Ну зачем же тебе экспериментировать если я уже все сделал?
Цитата HSP ()
В обьекте персонажа создай событие Create:
Код

max_ammo[0] = 10       // максимальное количество патронов в первом оружии
ammo[0] = max_ammo[0]  // патроны = макс.патроны
max_ammo[1] = 100     //  максимальное количество патронов во втором оружии
ammo[1] = max_ammo[1] // патроны = макс.патроны
// создашь этих переменных столько, сколько у тебя оружий

weapon = 0           // оружие, которое персонаж получит в начале игры

событие Step:
Код

rate += 1

и Global Left Mouse (или на какую ты там стреляешь)
Код
if(rate >=2 and ammo[weapon]>0) если патронов в выбранном оружии больше 0
{
bullet = instance_create(x+lengthdir_x(16, image_angle),
y+lengthdir_y(16, image_angle),  o_bullet)  // создаем пулю o_bullet (у себя поменяй этот оьект на свою пулю)
bullet.direction = image_angle   // направляем пулю туда куда смотрит персонаж
bullet.image_angle = image_angle // поворачиваем пулю так же как и игрока
bullet.speed = 10               // скорость пули
ammo[weapon] -= 1               // уменьшаем количество пуль у выбранного оружия
rate = 0
}


Сообщение отредактировал HSP - Вторник, 18 Февраля 2014, 19:10
HSPДата: Вторник, 18 Февраля 2014, 18:06 | Сообщение # 49 | Тема: Предел переменной
почетный гость
Сейчас нет на сайте
Цитата t111 ()
HSP, ты типа ему поясняешь?


Я пытаюсь тебе намекнуть, что можно иначе, можно ведь сделать так?

Код

if(global.a<10){global.a+=1}  


теперь переменная будет изменяться не постоянно, а только тогда когда global.a меньше десяти
HSPДата: Вторник, 18 Февраля 2014, 17:15 | Сообщение # 50 | Тема: Предел переменной
почетный гость
Сейчас нет на сайте
Цитата t111 ()
переменная например global.a
в шаге пишешь if(global.a>=10){global.a=10}
и всЁ !


ты каждый раз когда global.a превышает либо равно десяти присваиваешь этому значению десять


Сообщение отредактировал HSP - Вторник, 18 Февраля 2014, 17:15
HSPДата: Вторник, 18 Февраля 2014, 16:39 | Сообщение # 51 | Тема: Подскажите насчет смены объекта..
почетный гость
Сейчас нет на сайте
Цитата maksim1221232 ()
Ладно, давай не будем это обсуждать и закончим.

Давай это закончим, но помни, что люди разные и методы у них тоже разные


Сообщение отредактировал HSP - Вторник, 18 Февраля 2014, 16:39
HSPДата: Вторник, 18 Февраля 2014, 16:35 | Сообщение # 52 | Тема: Подскажите насчет смены объекта..
почетный гость
Сейчас нет на сайте
Тесты вот архив с моими двумя экспериментами, если кто-то сомневается в моих словах

Добавлено (18.02.2014, 16:35)
---------------------------------------------
Цитата maksim1221232 ()
как только i становится равна 300 происходит удаление обьекта, в дебаггере я вижу что напротив моей переменной "error" - такой переменной не существует, следовательно при попытке увеличить несуществующую переменную Game maker выдаст ошибку, но он ее не выдает

Это удаление объекта.
А если нужно будет изменить спрайт объекта, а не удалить его то что тогда?


Код

if(timer<301){timer +=1}
if(timer=300){изменяю спрайт обьекта}

вот тебе и оптимизация, кто тебе сказал, что я позволю таймеру увеличиваться вечно?


Сообщение отредактировал HSP - Вторник, 18 Февраля 2014, 16:40
HSPДата: Вторник, 18 Февраля 2014, 16:27 | Сообщение # 53 | Тема: Подскажите насчет смены объекта..
почетный гость
Сейчас нет на сайте
Цитата maksim1221232 ()
Он перестанет работать после того как объьект удалится

Я так не думаю. Так как код в Step'e то проверка все-ровно будет выполнятся, да и код большой.


Второй эксперимент:


Добавлено (18.02.2014, 16:24)
---------------------------------------------
Цитата maksim1221232 ()
я, например, не переношу ваш аларм и никогда им пользоваться не буду

Чем он мог не угодить? Так оптимизирование и код меньше.

Цитата maksim1221232 ()
Существует много языков и в некоторых нет аналога alarm[]

Но в GM всё же есть. Почему бы его не использовать?


я привык делать таймеры, поэтому таймеры для меня единственный правильный способ

Добавлено (18.02.2014, 16:27)
---------------------------------------------
Цитата maksim1221232 ()
Раз у тебя были отличия в Fps значит эти функции как-то отличаются.

не забывай, что на FPS влияет не только код, но и количество обьектов в комнате

к тому же в первом методе выполняется одна строчка кода, а во втором две, небольшое падение FPS при выполнении большого кода очивидно


Сообщение отредактировал HSP - Вторник, 18 Февраля 2014, 16:29
HSPДата: Вторник, 18 Февраля 2014, 16:07 | Сообщение # 54 | Тема: Подскажите насчет смены объекта..
почетный гость
Сейчас нет на сайте
Существует много языков и в некоторых нет аналога alarm[], поэтому мне больше по душе создавать таймер

Добавлено (18.02.2014, 16:07)
---------------------------------------------

Цитата Леонид ()
В жизни не видел человека, который так делал бы таймер.

Хорошо, тогда сделай нам таймер без alarm[], мне интересно как иначе можно
HSPДата: Вторник, 18 Февраля 2014, 16:05 | Сообщение # 55 | Тема: Подскажите насчет смены объекта..
почетный гость
Сейчас нет на сайте
Цитата Леонид ()
Цитата HSP ()
Неужели никто из вас не понимает что instance_change(object2,1) это и есть instance_create(x,y,object2) и instance_destroy() просто в одну строчку?

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


Неужели ты не понимаешь, что "правильный код" это понятие для всех разное, я, например, не переношу ваш аларм и никогда им пользоваться не буду, для меня правильней и удобнее работать с таймером, уж привык я так, простите
HSPДата: Вторник, 18 Февраля 2014, 15:52 | Сообщение # 56 | Тема: Подскажите насчет смены объекта..
почетный гость
Сейчас нет на сайте
Неужели никто из вас не понимает что instance_change(object2,1) это и есть instance_create(x,y,object2) и instance_destroy() просто в одну строчку?

Сообщение отредактировал HSP - Вторник, 18 Февраля 2014, 15:52
HSPДата: Вторник, 18 Февраля 2014, 15:48 | Сообщение # 57 | Тема: Подскажите насчет смены объекта..
почетный гость
Сейчас нет на сайте
Цитата maksim1221232 ()
Так оптимизирование

Для тебя тоже
Цитата HSP ()
А теперь рубрика "Эксперименты" (Специально для Леонида)



Сообщение отредактировал HSP - Вторник, 18 Февраля 2014, 15:50
HSPДата: Вторник, 18 Февраля 2014, 15:27 | Сообщение # 58 | Тема: Подскажите насчет смены объекта..
почетный гость
Сейчас нет на сайте
Цитата Леонид ()
тупой таймер

Все разными способами делают таймер, alarm[] это тоже таймер, и работает он так же как и мой

Цитата Леонид ()
который будет работать всю игру

Он перестанет работать после того как обьект удалится

Цитата Леонид ()
только нагружать производительность

А теперь рубрика "Эксперименты" (Специально для Леонида)


Сообщение отредактировал HSP - Вторник, 18 Февраля 2014, 15:50
HSPДата: Вторник, 18 Февраля 2014, 15:03 | Сообщение # 59 | Тема: Подскажите насчет смены объекта..
почетный гость
Сейчас нет на сайте
Цитата zzzzza ()
HSP, зачем создавать новый/удалять старый, для этого придумана функция instance_change("объект, на который нужно сменить","цифра 1 или 0(1-в новом объекте выполняется событие create, 0 -не выполняется)")

Дело в том, что на моей практике я никогда не пользовался instance_change() (мне не требовалась замена одного обьекта на другой), чаще всего мне нужно либо удалить, либо создать, поэтому мой метод немного примитивный, но работает безотказно, так же как твой.

Добавлено (18.02.2014, 14:52)
---------------------------------------------
Извиняюсь, за свой "просто ужасный код, к тому же работающий не так, как нужно" (С) Гуру Леонид
PS: Работает он корректно.

Вот новый:
Создаешь обьект 1 (object1) с событием Create:
Код

Time = 0 // таймер на ноль
LifeTime = random(100) // максимальное значение таймера (время через которое произойдет какое-то действие)

Добавляешь в этот обьект 1 (object1) событие Step:
Код

Time += 1 // каждый кадр увеличиваем значение таймера на 1
if(LifeTime<=Time) // если таймер больше или равен максимальному значению таймера, то выполняется следующее действие
{
instance_change(object2,1) // заменяем обьект, в котором выполняется код (object1), на обьект 2 (object2) (by zzzzza)
}

Добавлено (18.02.2014, 15:03)
---------------------------------------------

Цитата Леонид ()
Все хорошо, только alarm надо рандомный. Легче всего так:
Код
alarm[0]=random(минимальное кол-во шагов, максимальное кол-во шагов)


Если я, используя твой просто ужасный random(минимальное кол-во шагов, максимальное кол-во шагов), к тому же не существующий, то я получу ошибку "Wrong number of arguments to function or script.". Напомню, что нам нужно получить случайное число, а не ошибку. Советую использовать один из следующих:
Цитата Справка
random(x) Returns a random real number between 0 and x. The number is always smaller than x.

random_range(x1,x2) Returns a random real number between x1 (inclusive) and x2 (exclusive).

либо
Цитата Справка
irandom(x) Returns a random integer number between 0 and x (inclusive when x is an integer).

irandom_range(x1,x2) Returns a random real number between x1 (inclusive) and x2 (inclusive). Both x1 and x2 must be integer values (otherwise they are rounded down).


Сообщение отредактировал HSP - Вторник, 18 Февраля 2014, 14:53
HSPДата: Вторник, 18 Февраля 2014, 00:37 | Сообщение # 60 | Тема: Проблемы с запуском GMS
почетный гость
Сейчас нет на сайте
Памяти не хватает
Форум игроделов » Записи участника » HSP [84]
  • Страница 3 из 5
  • «
  • 1
  • 2
  • 3
  • 4
  • 5
  • »
Поиск:

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