Grabatrone | Дата: Воскресенье, 02 Апреля 2017, 09:31 | Сообщение # 1 |
был не раз
Сейчас нет на сайте
| Доброго времени суток, друзья!
Каким образом определить point_direction у левого стика геймпада XBOX360?
gp_axislh так же как и gp_axislv выводит значения от -1 до 1 Для управления (вверх, вниз, лево, право) все достаточно хорошо работает. А как высчитать угол, что-бы персонаж поворачивался в направлении стика. Как в TDS игрушках.
Уже много чего перепробовал. Даже так =D
Код image_angle = point_direction (x,y,gamepad_axis_value(0, gp_axislh),gamepad_axis_value(0, gp_axislv))
Помогите, пожалуйста...
Добавлено (02 апреля 2017, 09:31) --------------------------------------------- Вроде разобрался! Кому нужно, вот код:
В CREATE объекта:
Код direction = image_angle; gamepad_set_axis_deadzone(0,0.2); player_speed = 7; //Тут меняем скорость передвижения объекта
Это писать в STEP эвент. Рекомендую в BEGIN STEP:
Код //Задаем дедзон ( оптимальное значение 0.2 ) var deadzone_limit = 0.2;
//Код передвижения левым стиком if gamepad_axis_value(0,gp_axislv) >= -deadzone_limit && gamepad_axis_value(0,gp_axislv) <= deadzone_limit // Если джойстик не трогаем && gamepad_axis_value(0,gp_axislh) >= -deadzone_limit && gamepad_axis_value(0,gp_axislh) <= deadzone_limit { image_angle = direction; speed = 0; } else // Когда двигаем левый стик { var hlaxis = gamepad_axis_value(0, gp_axislh); // получаем значения по осям Х и У var vlaxis = gamepad_axis_value(0, gp_axislv); direction = point_direction(0, 0, hlaxis, vlaxis); // Поворот в направлении стика speed = point_distance(0 ,0, hlaxis, vlaxis) * player_speed; // плавное движение, в зависимости от силы нажатия на стик }
//Код разворота (при движении) правым стиком if gamepad_axis_value(0,gp_axisrv) >= -deadzone_limit && gamepad_axis_value(0,gp_axisrv) <= deadzone_limit // Аналогично коду выше: Если джойстик не трогаем && gamepad_axis_value(0,gp_axisrh) >= -deadzone_limit && gamepad_axis_value(0,gp_axisrh) <= deadzone_limit { image_angle = direction; } else { var hraxis = gamepad_axis_value(0, gp_axisrh);// получаем значения по осям Х и У var vraxis = gamepad_axis_value(0, gp_axisrv); image_angle = point_direction(0, 0, hraxis, vraxis); // Поворот обьекта правым стиком вне зависимости от направления движения (прицеливание) }
Пример для GMS: TDS управление стиками джойстика
Сообщение отредактировал Grabatrone - Воскресенье, 02 Апреля 2017, 09:55 |
|
| |