| 
	
		
		
			| Вопрос - Ответ (Game Maker) |  |  |  | 
| pelmenka | Дата: Понедельник, 12 Августа 2013, 19:48 | Сообщение # 4141 |  |   Драгоценный Тунеядец Сейчас нет на сайте | Krosos, у тебя после паузы действие продолжаться не будет. Ты со скобками намудрил. 
 Код  if deystvie=1 { //Если действие идет
 timer+=1 //Прибавляем таймер +1 каждый шаг
 if timer = 30 { timer=0 deystvie=0 pausa=1} // Если таймер достиг 30 шагов(1 секунда или пол секунды при фпс 60) то начинается пауза.
 if pausa=1 { //Если пауза идет
 timer+=1
 if timer = 60{ timer=0 deystvie=1 pausa=0}} //продолжаем действие
 
Правильнее выглядит так:
 
 Код  timer+=1 //можно сразу прибавлять таймер, избавимся от лишнего кода
 if action=1 //Я против переменных написанный транслитом!
 {
 if timer=30 {timer=0 action=0} //если таймер = 30, ставим действие в 0
 }
 else //т.к. pause была активна только в то время, когда deystvie было не активно, будем проверять deystvie
 {
 if timer=60 {timer=0 action=1}
 }
 
Хоть я и не знаю гамака, но так выглядит куда логичней
 P.S. А еще я бы заменил timer+=1 на timer++ и if action=1 на просто if action, но незнаю, будет ли так правильно
   
 Сталина в каждый дом!
 
 
 Сообщение отредактировал pelmenka - Понедельник, 12 Августа 2013, 20:00 |  |  |  |  |  | 
| Krosos | Дата: Понедельник, 12 Августа 2013, 19:55 | Сообщение # 4142 |  |   постоянный участник Сейчас нет на сайте | А точно , я блок не закрыл. if deystvie=1 { //Если действие идет
 timer+=1 //Прибавляем таймер +1 каждый шаг
 if timer = 30 { timer=0 deystvie=0 pausa=1}} // Если таймер достиг 30 шагов(1 секунда или пол секунды при фпс 60) то начинается пауза.
 if pausa=1 { //Если пауза идет
 timer+=1
 if timer = 60{ timer=0 deystvie=1 pausa=0}}
 
 Добавлено (12.08.2013, 19:55)
 ---------------------------------------------
 pelmenka, все остальное работает!Я только-что проверил!
 
 
   
   
 Мой проект
 
 
 Сообщение отредактировал Krosos - Понедельник, 12 Августа 2013, 19:55 |  |  |  |  |  | 
| pelmenka | Дата: Понедельник, 12 Августа 2013, 20:00 | Сообщение # 4143 |  |   Драгоценный Тунеядец Сейчас нет на сайте | Я отредактировал сообщение, прочитай его :3 
 Сталина в каждый дом!
 |  |  |  |  |  | 
| Krosos | Дата: Понедельник, 12 Августа 2013, 20:05 | Сообщение # 4144 |  |   постоянный участник Сейчас нет на сайте | pelmenka, это правильно только в том случае , если код не будет дополняться. Он может уйти на третье действие , у него же там, наверное, не только это.
 В таком случае таймер улетает в небеса.
 
 
   
   
 Мой проект
 |  |  |  |  |  | 
| pelmenka | Дата: Понедельник, 12 Августа 2013, 20:08 | Сообщение # 4145 |  |   Драгоценный Тунеядец Сейчас нет на сайте | Krosos, насколько я понял из поста beril, третьего действия не будет 
 Сталина в каждый дом!
 |  |  |  |  |  | 
| Krosos | Дата: Понедельник, 12 Августа 2013, 20:12 | Сообщение # 4146 |  |   постоянный участник Сейчас нет на сайте | pelmenka, ну не важно , главное , чтобы он понял вот такой способ таймера. Аларм и такой способ оба хороши , но в разных ситуациях.
 Аларм работает только для одного шага действий , а мой способ работает для постоянных шагов.
 
 
   
   
 Мой проект
 |  |  |  |  |  |  |  |  |  | 
| Krosos | Дата: Вторник, 13 Августа 2013, 09:06 | Сообщение # 4149 |  |   постоянный участник Сейчас нет на сайте | beril, а как ты собрался делать действие без степа Oo? Тогда подойдет аларм.
 
 
   
   
 Мой проект
 |  |  |  |  |  |  |  | 
| GameMix | Дата: Вторник, 13 Августа 2013, 12:05 | Сообщение # 4151 |  |   старожил Сейчас нет на сайте | beril, для Draw нужно будет просто увеличить кол-во шагов для таймера, т.к. Draw быстрее, чем Step. 
 Steel Standoff - 2D аркада.
 Мои статьи
 |  |  |  |  |  | 
| Krosos | Дата: Вторник, 13 Августа 2013, 12:58 | Сообщение # 4152 |  |   постоянный участник Сейчас нет на сайте | Я сделал эффект и дал ему место: 
 Код if global.AttackPoint>0{ part_emitter_region(global._systemabc,global._emitterabc ,global.AttackPoint.x-64,global.AttackPoint.x+64,global.AttackPoint.y-64,global.AttackPoint.y+64,ps_shape_diamond,ps_distr_linear);  }
 Как теперь его убрать?
 Я пробовал это , но не помогло:
 
 Код  if global.AttackPoint>0{ part_emitter_region(global._systemabc,global._emitterabc ,global.AttackPoint.x-64,global.AttackPoint.x+64,global.AttackPoint.y-64,global.AttackPoint.y+64,ps_shape_diamond,ps_distr_linear);
 }else{part_system_clear(global._systemabc)  part_particles_clear(global._emitterabc)}
Добавлено (13.08.2013, 12:58)---------------------------------------------
 А ,точно , я нашел ошибку.Я все это не туда запихнул и не то убрал...
  
 
   
   
 Мой проект
 
 
 Сообщение отредактировал Krosos - Вторник, 13 Августа 2013, 12:51 |  |  |  |  |  | 
| Anthem | Дата: Пятница, 16 Августа 2013, 22:21 | Сообщение # 4153 |  |   Д'Артаньян Сейчас нет на сайте | Как в ГМЛ обозначить "область перед объектом в зависимости от направления движения"? 
 Текстовый контент для вашей игры (бесплатно)
 Сценарист, геймдизайнер для Вашей игры
 |  |  |  |  |  | 
| GameMix | Дата: Суббота, 17 Августа 2013, 00:03 | Сообщение # 4154 |  |   старожил Сейчас нет на сайте | Anthem, используем lengthdir_x() и lengthdir_y(). 
 Пример:
 Create объекта, перед которым надо "обозначить область":
 Код rectWidth = 100; // ширина области rectLen = 200; // длина области
В EndStep или в Draw(чтобы видеть область)
 
 Код angle = point_direction(x, y, mouse_x, mouse_y); // вместо направления движения объекта 
 // ====== вычисление ограниченной прямоугольной области перед объектом =======
 x1 = x + lengthdir_x(rectWidth / 2, angle + 90);
 y1 = y + lengthdir_y(rectWidth / 2, angle + 90);
 
 x2 = x + lengthdir_x(rectWidth / 2, angle - 90);
 y2 = y + lengthdir_y(rectWidth / 2, angle - 90);
 
 x3 = x1 + lengthdir_x(rectLen, angle);
 y3 = y1 + lengthdir_y(rectLen, angle);
 
 x4 = x2 + lengthdir_x(rectLen, angle);
 y4 = y2 + lengthdir_y(rectLen, angle);
 // ===========================================================================
 
 // рисую круг вместо спрайта объекта
 draw_circle(x, y, 3, false);
 
 // визуальное представление области
 draw_line(x, y, x1, y1);
 draw_line(x, y, x2, y2);
 draw_line(x1, y1, x3, y3);
 draw_line(x2, y2, x4, y4);
 draw_line(x3, y3, x4, y4);
 Steel Standoff - 2D аркада.
 Мои статьи
 
 
 Сообщение отредактировал GameMix - Суббота, 17 Августа 2013, 00:04 |  |  |  |  |  | 
| MasterSambo | Дата: Суббота, 17 Августа 2013, 09:02 | Сообщение # 4155 |  |   заслуженный участник Сейчас нет на сайте | Как сделать эффект фонаря? |  |  |  |  |  | 
| GameMix | Дата: Суббота, 17 Августа 2013, 09:24 | Сообщение # 4156 |  |   старожил Сейчас нет на сайте | arkady, тут тебе помогут сурфы, и чтобы их использовать, нужно хотя бы чуть-чуть знать GML. 
 Steel Standoff - 2D аркада.
 Мои статьи
 |  |  |  |  |  | 
| MasterSambo | Дата: Суббота, 17 Августа 2013, 09:41 | Сообщение # 4157 |  |   заслуженный участник Сейчас нет на сайте | Приступаю! |  |  |  |  |  | 
| t111 | Дата: Суббота, 17 Августа 2013, 13:51 | Сообщение # 4158 |  | почетный гость Сейчас нет на сайте | Помогите Пожалуйста! Волнуют некоторые вопросы, из за которых толком не могу реализовать игру ... 
 Суть
 игры такая: два самолета на
 одном экране воюют против
 друг-друга. При трех
 попаданиях самолет
 взрывается, есть
 возможность
 катапультироваться. Как
 сделать, чтобы самолет при
 зазатой кнопки в сторону
 плавно набирал скорость или
 терял ее при обратом
 нажатии? Еще как сделать
 интервал между вылетами
 пуль, например в одну
 секунду, чтобы например
 ровно на секунду кнопка
 выстрела была не активна
 при нажатии после вылета
 первой пули, потом секунда
 проходит, я жму и вылетает
 вторая. А то я например жму
 часто и они валят градом,
 так не интерессно. Ну вроди
 пока все, заранее спасибо.
 Форум игроделов »
 Конструкторы игр и лёгкие в
 
 как известно, встречают по
 одежке, а провожают
 uninstall'ом"
 
 
   |  |  |  |  |  |  |  | 
| GameMix | Дата: Воскресенье, 18 Августа 2013, 00:07 | Сообщение # 4160 |  |   старожил Сейчас нет на сайте | Krosos, думаю, вопрос уже не актуален (тема с этим же вопросом). 
 Steel Standoff - 2D аркада.
 Мои статьи
 |  |  |  |  |  
 |