Понедельник, 25 Ноября 2024, 13:12

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

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Счетчик к объекту с анимацией
Sergz81Дата: Четверг, 26 Июня 2014, 21:40 | Сообщение # 1
был не раз
Сейчас нет на сайте
Есть объект с анимацией при нажатии которого он разрушается. Как сделать проще привязку счетчика к этому объекту и как ограничить исходя из счетчика количество нажатий на этот объект?

Пытался сделать так:
create:
score=3
scorepl=1

left pressed:
if score>0
{score-=1
scorepl+=1}

Draw:
Draw the value of score
aFriendДата: Пятница, 27 Июня 2014, 00:57 | Сообщение # 2
участник
Сейчас нет на сайте
Не понял вопроса
Sergz81Дата: Пятница, 27 Июня 2014, 10:17 | Сообщение # 3
был не раз
Сейчас нет на сайте
Как привязать счетчик (количество ограниченных повторений (к примеру 3) в цифрах) к разрушаемому блоку при условии что разрушение блока идет при нажатии мышкой и счетчик реагирует на нажатие на этот блок. И как сделать ограничение исходя из счетчика (при достижении 0 повторений не происходило разрушение блока при нажатии мышкой на сам блок).
Думаю так понятнее...
XDominatorДата: Пятница, 27 Июня 2014, 10:32 | Сообщение # 4
постоянный участник
Сейчас нет на сайте
Так бы и написал - разрушение в несколько стадий.

Делаешь 1 спрайт из n картинок, которые обозначают стадии

СЧитаем что этот спрайт присвоен объекту.

Код

//Create
stage = 0
max_stage = 3
image_speed = 0;

//left pressed
if stage < max_stage
  stage++;

image_index = stage;


Вот и все.


Ghaarp

The soul lighter(Android, logic)

Zzzzombie RAGE!!!(For android)
Sergz81Дата: Пятница, 27 Июня 2014, 21:54 | Сообщение # 5
был не раз
Сейчас нет на сайте
Думаю так лучше будет...

XDominatorДата: Пятница, 27 Июня 2014, 22:22 | Сообщение # 6
постоянный участник
Сейчас нет на сайте
Ну это же еще проще.
В creation code комнаты пишешь
Код

global.cubes_count = 3


Затем в нажатии кнопкой мыши на куб
Код

if global.cubes_count > 0
{
global.cubes_count--;
//тут че ты там хочешь со своими кубами сделать
}


Ghaarp

The soul lighter(Android, logic)

Zzzzombie RAGE!!!(For android)


Сообщение отредактировал XDominator - Пятница, 27 Июня 2014, 22:22
Sergz81Дата: Суббота, 28 Июня 2014, 00:18 | Сообщение # 7
был не раз
Сейчас нет на сайте
Пробую так:
В объекте Block_1
Create:
score=3
scorepl=1

Alarm 0
Destroy the instance

Left Button
alarm[0]=33
Change sprite (Анимация уничтожения)

Left pressed
if score>0
{score-=1
scorepl+=1
}
И контроллер (Draw - score)

Добавляю в комнату
global.cubes_count = 3 (здесь наверное вместо cubes имя объекта)

И добавляю на нажатие клавиши остальное, но ничего не происходит. Счетчик отсчитывает до 0. Но после 0 блоки уничтожаются...

Думаю, что то не так делаю...
XDominatorДата: Суббота, 28 Июня 2014, 00:48 | Сообщение # 8
постоянный участник
Сейчас нет на сайте
Конечно не так. global.cubes_count - глобальная переменная. Она доступна из любого места программы, и она является твоим счетчиком оставшихся для разрушения блоков. Ты можешь ее назвать хоть abc, но должен стоять префикс global. как директива, что переменная - глобальная. Именно из нее ты вычитаешь единицы( с помощью оператора -- или -=1) при уничтожении блока, и когда именно она достигает 0, запрещаешь уничтожение блоков. creation code комнаты - код, который выполняется при открытии комнаты, задается во вкладке settings комнаты, кнопка creation code. Там ты инициализируешь глобальную переменную. При нажатии на блок, ты проверяешь значение этой глобальной переменной. Если оно больше нуля(строчка if global.cubes_count > 0) - тогда выполняешь код уничтожения блока. Если же она не проходит проверку - значит 3 блока уже были уничтожены, и поэтому ничего не происходит.

Ghaarp

The soul lighter(Android, logic)

Zzzzombie RAGE!!!(For android)


Сообщение отредактировал XDominator - Суббота, 28 Июня 2014, 00:49
Sergz81Дата: Суббота, 28 Июня 2014, 14:54 | Сообщение # 9
был не раз
Сейчас нет на сайте
Как правильно написать запрещение уничтожения блоков (код уничтожения)?

Сообщение отредактировал Sergz81 - Воскресенье, 29 Июня 2014, 00:56
WhoAmIДата: Воскресенье, 29 Июня 2014, 00:54 | Сообщение # 10
Сумасшедший программист
Сейчас нет на сайте
Насколько я понял вопрос, можно уничтожить только три куба в комнате(если не так извени)
Итак создаёшь отдельный объект, объявляешь global.cubeCount = 3 в Create.Затем берёшь событие левого клика на куб. Вставляешь следующий код:
Код

if(global.cubeCount>0){
instance_destroy();
global.cubeCount
}

Цитата Sergz81 ()
if global.cubes_count > 0
{
global.cubes_count-=1

} в самом объекте.
Пробовал и так и так.... Все равно тоже самое...
Ну так, добавь в это условие функцию instance_destroy();


Struggle #Gamiron12

Сообщение отредактировал WhoAmI - Воскресенье, 29 Июня 2014, 00:55
Sergz81Дата: Воскресенье, 29 Июня 2014, 09:18 | Сообщение # 11
был не раз
Сейчас нет на сайте
Самое интересное, что ставлю все как пишешь.
Три куба уничтожаются без анимации (просто исчезают). А дальше идет уничтожение кубов с анимацией. То есть нет остановки анимации при нажатии на кубы после трех штук.
aFriendДата: Воскресенье, 29 Июня 2014, 13:30 | Сообщение # 12
участник
Сейчас нет на сайте
используй
Код
image_speed = 0
WhoAmIДата: Понедельник, 30 Июня 2014, 11:36 | Сообщение # 13
Сумасшедший программист
Сейчас нет на сайте
Sergz81, для этого нужен аларм. Создай аларм. В нажатии на куб пропиши:
Код

if(global.cubeCount>0){   
global.cubeCount-=1
alarm[0] = room_speed;(сколько будет идти анимация, допустим секунду)
image_speed = 1;
}

В аларме пиши:
Код

instance_destroy();
и в Create:
Код

image_speed = 0;

Должно помочь...


Struggle #Gamiron12

Сообщение отредактировал WhoAmI - Понедельник, 30 Июня 2014, 11:45
Sergz81Дата: Четверг, 03 Июля 2014, 12:07 | Сообщение # 14
был не раз
Сейчас нет на сайте
Да. Все норм. Только без анимации. Кубы просто исчезают (3 штуки) и дальше на нажатие не реагируют. Но когда я вставляю замену спрайта (анимацию уничтожения) при нажатии на куб. Анимация не исчезает на остальных и происходит зацикленно.

Добавлено (30.06.2014, 13:29)
---------------------------------------------
Все решил наконец то :). Нужно было добавить sprite_index=<имя>

Добавлено (03.07.2014, 12:07)
---------------------------------------------
Хочу сделать ограничение на появление (создание кубов).
Делаю так:
В объекте (невидимый на экране) прописываю:

Create:
score=3
global.create_count = 3
image_speed = 0;

Alarm0:
instance_destroy();
Create instance of object(имя)//Объект который должен появиться при нажатии.

Left Pressed:
if score>0
{score-=1
}

if global.create_count > 0
{
global.create_count-=1
alarm[0] = room_speed;
image_speed = 1;
}
alarm[0]=25

Change sprite into (имя спрайта) // анимация появления куба.

Проблема в том, что счетчик отсчитывает до нуля, но все равно я могу нажимать (создавать) кубы.
Что не так? И как сделать два независимых счетчика на уничтожение объекта и на его создание?

InitroДата: Четверг, 03 Июля 2014, 13:36 | Сообщение # 15
почетный гость
Сейчас нет на сайте
Sergz81,
Аналог сделай под себя
Код
if (hp<=0) and !(livess=0)  
{   
    hp=100;  
    livess-=1;   
    cu=instance_create(irandom_range(5,600),irandom_range(5,400),obj_cube);  
}
Sergz81Дата: Воскресенье, 13 Июля 2014, 12:10 | Сообщение # 16
был не раз
Сейчас нет на сайте
Не совсем понятно где прописать этот код и как сделать независимые счетчики с отображением их на экране.
GMHelpДата: Воскресенье, 13 Июля 2014, 17:54 | Сообщение # 17
почетный гость
Сейчас нет на сайте
Sergz81, а это значит что тебе надо задавать вопросы в стиле -"А где кнопка создать объект ?"
Если ты даже не знаешь куда тебе впихнуть код.


Всё что я сказал может показаться обидно , но это только кажется так, ибо мнение моё и оно может поменяться.
  • Страница 1 из 1
  • 1
Поиск:

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