Russian Qt Forum

Qt => Вопросы новичков => Тема начата: Vessels.TSS от Декабрь 21, 2020, 15:52



Название: Нужно переделать управление персонажа под тригонометрию с поворотом картинки.
Отправлено: Vessels.TSS от Декабрь 21, 2020, 15:52
У меня стоит обычное управление нажал - переместилось на пиксель вбок и тп. Мне нужно чтобы персонаж перемещался по типу этого кода но на Qt.

    if (Up && speed<maxSpeed)
        if (speed < 0)  speed += dec;
        else  speed += acc;
 
    if (Down && speed>-maxSpeed)
        if (speed > 0) speed -= dec;
        else  speed -= acc;
 
    if (!Up && !Down)
        if (speed - dec > 0) speed -= dec;
        else if (speed + dec < 0) speed += dec;
        else speed = 0;
 
    if (Right && speed!=0)  angle += turnSpeed * speed/maxSpeed;
    if (Left && speed!=0)   angle -= turnSpeed * speed/maxSpeed;
 
    car[0].speed = speed;
    car[0].angle = angle;


Название: Re: Нужно переделать управление персонажа под тригонометрию с поворотом картинки.
Отправлено: ssoft от Декабрь 22, 2020, 08:09
Код
C++ (Qt)
void MyItem::keyPressEvent(QKeyEvent *event)
{
  auto key = event->key();
  if (key == Qt::Key_Up && speed<maxSpeed)
       if (speed < 0)  speed += dec;
       else  speed += acc;
 
   if (key == Qt::Key_Down && speed>-maxSpeed)
       if (speed > 0) speed -= dec;
       else  speed -= acc;
 
   if (key != Qt::Key_Up && key != Qt::Key_Down)
       if (speed - dec > 0) speed -= dec;
       else if (speed + dec < 0) speed += dec;
       else speed = 0;
 
   if (key == Qt::Key_Right && speed!=0)  angle += turnSpeed * speed/maxSpeed;
   if (key == Qt::Key_Left && speed!=0)   angle -= turnSpeed * speed/maxSpeed;
 
   car[0].speed = speed;
   car[0].angle = angle;
}