RS Game Maker Community
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

 
Расширенный поиск
  Главная  Форум   Вики Блоги FAQ Игры Статьи Примеры Войти Регистрация  
Вики
Все желающие приглашаются редактировать вики. Можете писать о своих (или чужих) играх, размещать туториалы, постить статьи - главное навесить категорию.
Страниц: 1 ... 345 346 347 348 349 350 351 352 353 ... 355   Вниз
  Печать  
Ответы@Gmakers.ru — все вопросы сюда
0 Пользователей и 3 Гостей смотрят эту тему.
deathsoul
дезсоул
Ветеран форума
*****

Репутация: 547
Offline Offline

Награды:
Легенда сайта
Сообщений: 1 853


21 Апреля 2011 в 01:14
Чтобы не было тем с вопросами, которые содержат всего два-три сообщения, все свои вопросы задавайтесь здесь. Если вопрос окажется слишком сложным для общей темы, модераторы всегда могут вынести обсуждение в отдельную тему.
Для этой темы действуют те же правила, что и для всего раздела, так что перед тем, как задать вопрос, обязательно ознакомьтесь с этой темой: «Ознакомьтесь, прежде чем задать вопрос». И не забудьте проверить, нет ли ответа на ваш вопрос в FAQ по Game Maker.
Последнее редактирование: 13 Октября 2013 в 19:01 от Огион
 
Vovan1802
Участник
*

Репутация: 2
Offline Offline

Сообщений: 96

Ответ № 6961 29 Ноября 2016 в 15:14
Vovan1802, проверять нажатия вот так:
if (keyboard_check(vk_left)
        || joystick_xpos(1) <= -0.5) {
    x -= 4;
}
/*...*/
Но лучше всего позволить самому игроку назначать кнопки для действий в игре. Например, можно использовать мою систему
Спасибо за совет, но для моего проекта нужно что то попроще. Просто нужно чтоб вместо стрелок был стик ждойстика. А вот как его сделать- не знаю
Установи пользовательские события и при нужном наклоне джойстика выполнять их.
В том то и дело что самого джойстика еще нет. Не знаю как он пишется. То что подставить события при нужном наклоне- это понятно. Мне не понятно как сам джойстик написать
Огион
Завсегдатай
****

Репутация: 124
Online Online

Сообщений: 942


Ответ № 6962 29 Ноября 2016 в 15:50
Vovan1802,
можешь просто продублировать код из событий клавиатуры в события джойстика — они прячутся в группе Mouse. Но тогда будет смешной баг: если игрок одновременно будет нажимать клавишу и стик, будут срабатывать два события, и персонаж будет бежать в  два раза быстрее. Поэтому лучше использовать функции, а не события.
diroLEX,
в каждом экземпляре есть две пары переменных, отвечающих за перемещение: speed и direction — скорость и направление, — и vspeed и hspeed — скорость отдельно по вертикали и горизонтали. Эти переменные связаны: меняешь одну из них — меняются и другие. В каких-то случаях удобно использовать speed и direction, а в каких-то vspeed и hspeed.
Функция move_towards_point только для удобства: то же самое можно было бы сделать так:
direction = point_direction(x, y, obj_ball.x, obj_ball.y);
speed = 5;
В данном случае move_towards_point удобна, но в некоторых случаях не получится её использовать. Например, если тебе нужно, чтобы объект не двигался к мячу, а наоборот — убегал от него:
direction = point_direction(x, y, obj_ball.x, obj_ball.y) - 180;
Последнее редактирование: 29 Ноября 2016 в 15:56 от Огион
tolich
to ne lich
Ветеран форума
*****

Репутация: 213
Offline Offline

Сообщений: 1 478


moonlite

Ответ № 6963 29 Ноября 2016 в 16:33
в некоторых случаях не получится её использовать. Например, если тебе нужно, чтобы объект не двигался к мячу, а наоборот — убегал от него.
Пфф.
move_towards_point(obj_ball.x,obj_ball.y,-5);

Vovan1802
Участник
*

Репутация: 2
Offline Offline

Сообщений: 96

Ответ № 6964 29 Ноября 2016 в 16:49
Vovan1802,
можешь просто продублировать код из событий клавиатуры в события джойстика — они прячутся в группе Mouse. Но тогда будет смешной баг: если игрок одновременно будет нажимать клавишу и стик, будут срабатывать два события, и персонаж будет бежать в  два раза быстрее. Поэтому лучше использовать функции, а не события.
Игру пишу под андроид, поэтому можно просто убрать виртуальные клавиши, тогда не получится нажать на и на клавишу и на джойстик одновременно. И все равно я так и не понял как сделать этот джойстик, какой код для его создания. Нужен типа такой как на картинке во вложении
Прикреплённые файлы Графические миниатюры:
Огион
Завсегдатай
****

Репутация: 124
Online Online

Сообщений: 942


Ответ № 6965 29 Ноября 2016 в 18:01
А, так тебе нужен виртуальный стик. Так бы сразу и сказал.
В GMS нет встроенного виртуального стика, его нужно написать самому. Я тебе сделаю пример.

tolich, тогда тебе такой челлендж: написать при помощи move_towards_point плавный поворот.
Огион
Завсегдатай
****

Репутация: 124
Online Online

Сообщений: 942


Ответ № 6966 29 Ноября 2016 в 22:11
Сделал пример виртуального стика.
Прикреплённые файлы
* virtual_stick.gmz (217.37 Кб - загружено 12 раз.)
Огион
Завсегдатай
****

Репутация: 124
Online Online

Сообщений: 942


Ответ № 6967 29 Ноября 2016 в 22:55
+ надо чтобы по достижению объектом 1 объекта 2 первый останавливался.
Надо проверять в Step, соблюдается ли условие, при котором объект должен остановиться. Если да, то остановить объект, то есть сбросить speed на ноль. Какое именно условие, зависит от того, что ты подразумеваешь под «объект достигнут».
Объект 1 уткнулся в объект 2?
if (place_meeting(x + hspeed, y + vspeed, obj_ball)) {
    speed = 0;
}
Расстояние между объектами сократилось до заданной величины?
if (point_distance(x, y, obj_ball.x, obj_ball.y) < 32) {
    speed = 0;
}
Vovan1802
Участник
*

Репутация: 2
Offline Offline

Сообщений: 96

Ответ № 6968 29 Ноября 2016 в 22:57
Сделал пример виртуального стика.
Спасибо, это как раз то что нужно. Только все равно я не пойму как в него добавить клавиши. Можешь в него добавить клавиши up, right и left? Буду очень признателен)
Огион
Завсегдатай
****

Репутация: 124
Online Online

Сообщений: 942


Ответ № 6969 01 Декабря 2016 в 02:06
Всё точно так же, как и с настоящим стиком:
if (keyboard_check(vk_left)
        || o_vstick.thumb_x <= -0.5) {
    x -= 4;
}
/*...*/
Вместо 0,5 можно взять другое пороговое значение, тут надо поэкспериментировать.
Vovan1802
Участник
*

Репутация: 2
Offline Offline

Сообщений: 96

Ответ № 6970 01 Декабря 2016 в 02:11
Всё точно так же, как и с настоящим стиком:
if (keyboard_check(vk_left)
        || o_vstick.thumb_x <= -0.5) {
    x -= 4;
}
/*...*/
Вместо 0,5 можно взять другое пороговое значение, тут надо поэкспериментировать.
А можно его зафиксировать в определённой точке? И сделать чтоб он был виден всегда? И внутренний круг(сам стик) чтоб был залит каким нибудь цветом?
Vovan1802
Участник
*

Репутация: 2
Offline Offline

Сообщений: 96

Ответ № 6971 01 Декабря 2016 в 02:19
Вообще по сути получается мне нужно, чтоб под пальцем(мышью) во время нажатия появлялся залитый круг, который будет следовать за пальцем (мышью) в радиусе определённой площади. Надеюсь понятно объяснил))
Doctor_Hummer
Подозрительно
Активный участник
**

Репутация: 11
Offline Offline

Сообщений: 162


Боль

Ответ № 6972 01 Декабря 2016 в 07:51
Как с помощью функций blend mode сделать объект полностью белым? Долго мучался с ними, получилось сделать объект только полностью чёрным  _

Однако
Огион
Завсегдатай
****

Репутация: 124
Online Online

Сообщений: 942


Ответ № 6973 01 Декабря 2016 в 11:34
Vovan1802,
изучи внимательно пример, и тогда поймёшь, как всё это сделать.

Doctor_Hummer,
тебе поможет d3d_set_fog. И это, между прочим, есть в FAQ.
Последнее редактирование: 02 Декабря 2016 в 02:12 от Огион
CaptainFaust
Активный участник
**

Репутация: 5
Offline Offline

Сообщений: 159

Ответ № 6974 01 Декабря 2016 в 14:37
Есть ли способ получить все ID объектов попавших в collision_circle?
Огион
Завсегдатай
****

Репутация: 124
Online Online

Сообщений: 942


Ответ № 6975 01 Декабря 2016 в 15:12
while (true) {
    var collinst;
    colinst = collision_circle(x, y, rad, obj, true, false);
    if (collinst == noone) {
        break;
    }
    ds_list_add(list_collinsts, collinst);
    instance_deactivate_object(collinst);
}
var i;
for (i = 0; i < ds_list_size(list_collinsts); i += 1) {
    var collinst;
    collinst = ds_list_find_value(list_collinsts, i);
    instance_activate_object(collinst);
    /*...*/
}
ds_list_clear(list_collinsts);
Последнее редактирование: 01 Декабря 2016 в 21:02 от Огион
CaptainFaust
Активный участник
**

Репутация: 5
Offline Offline

Сообщений: 159

Ответ № 6976 01 Декабря 2016 в 19:54
спасибо
et90
Новичок


Репутация: 0
Offline Offline

Сообщений: 1

Ответ № 6977 03 Декабря 2016 в 17:29
with all
    {
    if point_distance(x,y,other.cir_x,other.cir_y)<other.cir_r
        {
        ds_list_add(other.colliz_list,id,x,y)
        }
    }
input.txt
Не очень
Активный участник
**

Репутация: 15
Offline Offline

Сообщений: 105


12.8 Gb

Ответ № 6978 03 Декабря 2016 в 18:01
Этот способ находит только объекты с координатами внутри окружности. А надо найти те, которые сталкиваются с ней хоть краем маски. И еще объекты внутри окружности могут вообще не иметь маски, и потому не должны попадать в список.
tolich
to ne lich
Ветеран форума
*****

Репутация: 213
Offline Offline

Сообщений: 1 478


moonlite

Ответ № 6979 04 Декабря 2016 в 00:57
Объекты внутри окружности могут её не пересекать, даже имея маску.

Vovan1802
Участник
*

Репутация: 2
Offline Offline

Сообщений: 96

Ответ № 6980 04 Декабря 2016 в 17:09
Как в платформере сделать так, чтоб нельзя был пройти сквозь врага?
Страниц: 1 ... 345 346 347 348 349 350 351 352 353 ... 355   Вверх
  Печать  
 
Перейти в:  

RSGMC (gmakers.ru) © 2007—2017
Счётчик–@Mail.ru