Суббота, 28 Декабря 2024, 11:50

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

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Image_angle с помощью стиков геймпада XBOX360
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
  • Страница 1 из 1
  • 1
Поиск:

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