АДМИН | Дата: Среда, 2012/Авг/15, 13:37 | Сообщение # 1 |
Группа: Администрация
Сообщений: 62
Статус: Offline
| 2.1.1. Как ограничить значение переменной? Ответ: Для начала, следует учесть, что вы можете получить небольшой, но всё же выигрыш в производительности, проверяя значение переменной исключительно фактически после её изменения. То есть, если жизни игрока уменьшаются при столкновении с монстром и с огнём - немного производительней будет поставить две проверки в эти события, чем писать одну в step event, которая будет выполнятся каждый шаг. Однако, не стоит злоупотреблять этим в ущерб сопровождаемости кода. К примеру, если вам понадобится как-то изменить событие смерти игрока - вам придётся менять его в двух событиях (в лучшем случае), а не в одном (в случае со step event). Чтобы этого не происходило, лучше выносите повторяющиеся куски кода в скрипты или user events. Последние можно выполнить с помощью команды event_user(номер_события). Итак, при увеличении или уменьшении вы можете использовать такие простые проверки: Код: variable += x; if variable > variable_max // Если переменная больше указанного значения, то... variable = variable_max; // Устанавливаем переменной максимальное значение variable -= x; if variable < variable_min variable = variable_min; | Ещё один вариант решения через if: Код: if (variable>variable_max) {variable=variable_max} else {variable+=x} | Почти то же самое, но здесь переменная изменяется после проверки, а не до неё. Слегка понизив читабельность можно добится большей компактности кода, используя функции min и max: Код: variable = min(variable + x, variable_max); // Если variable_min + x больше variable_max - выбираем меньшее, то есть, variable_max. variable = max(variable - x, variable_min); | Часто в различных примерах вы можете встретить такую запись: Код: variable = max(variable_min, min(variable, variable_max)); | Однако, есть способ лучше, который я и предпочитаю использовать: Код: variable = median(variable_min, variable, variable_max); // Находим среднее из значений, если variable < variable_min - средним становится variable_min и аналогично для variable_max. | Например, если вы хотите ограничить передвижение игрока некоторыми рамками, скажем, сделать, чтобы он не выходил за границы комнаты - вы можете написать так: Код: x = median(0, x, room_width - sprite_width); y = median(0, y, room_height - sprite_height); | | 2.1.2. Мне нужно написать текст с указанием значения переменной, как? Ответ: Пропишите отдельному объекту в событие draw, такой код: Код: draw_text (x, y, ' Текст до переменной ' + string(переменная) + ' Текст после'); Не забудьте, что переменная может быть названа только на английском языке, без пробелов и начинаться она должна с буквы. Так же, если переменная всегда хранит текстовое значение - её не обязательно заносить в string(). | | 2.1.3. Как сделать, чтобы герой TDS смотрел на мышь? Ответ: Так как направление 0 - вправо, нужно повернуть спрайт игрока вправо и прописать такой код в step event объекту: Код: image_angle = point_direction (x, y, mouse_x, mouse_y); | Так же убедитесь, что в draw event вы не рисуете спрайт объекта без использования переменной image_angle. К примеру, если вы рисуете спрайт таким образом: Код: draw_sprite(sprite_index, image_index, x, y); | следует заменить эту строку на: Код: draw_sprite_ext(sprite_index, image_index, x, y, image_xscale, image_yscale, image_angle, image_blend, image_alpha); | | 2.1.4. Как запросить имя игрока, и в последствии использовать его в сообщениях и диалогах? Ответ: Запросить имя можно таким образом: Код: global.Hero_name = get_string('Как вас зовут?', 'DeatHSoul'); | После этого, введённое игроком имя будет хранится в глобальной переменной Hero_name, которая будет сохранять свое значение во всех комнатах, и вы можете использовать её, чтобы получить имя игрока. Например, так: Код: show_message('Привет ' + global.Hero_name + '!'); | | 2.1.5. Как программно отразить спрайт по вертикали или горизонтали? Ответ: Чтобы отразить спрайт по горизонтали - нужно параметрам image_xscale и image_yscale присвоить значение -1. Однако, убедитесь, что ваш спрайт рисуется с использованием переменных image_xscale и image_yscale. т.е. если вы рисуете спрайт функцией draw_sprite, замените её на функцию draw_sprite_ext. | 2.1.6. Как повернуть комнату? Ответ: Используйте view_angle[0..7], и убедитесь, что у вас включен указанный вид. Если вы хотите, чтобы вид поворачивался вместе с игроком - учтите, что его нужно поворачивать в противоположную сторону. Вместо: Код: view_angle[0] = direction; | пишите: Код: view_angle[0] = -direction; | | 2.1.7. Как сделать паузу между выстрелами? Ответ: [create event]: Код: shooting_ready = 1; // Указываем, что игрок готов стрелять step event: Код: if (shooting_ready) // Если игрок готов стрелять { // ... // Стреляем alarm[0] = room_speed*<количество_секунд>; // Устанавливаем время, через которое игрок снова будет готов стрелять shooting_ready = 0; // Указываем, что игрок более не может стрелять } alarm 0 event: Код: shooting_ready = 1; // После истечения времени указываем, что игрок готов стрелять |
Создатель сайта!!!!
|
|
| |
| |