Autor Wątek: Ruch kamera w przód i w tył  (Przeczytany 640 razy)

Offline bonifacy

  • Użytkownik

# Styczeń 31, 2012, 11:01:22
Witam
Mam taki problem z ruchem kamery do przodu i do tyłu. Wyznaczam sobie wektor kierunkowy, ale kamera porusza się z inną prędkością w przód a z inną w tył (w tył około 2x szybciej).

Tak wygląda kod:
void Camera::update(Input* input)
{
        vector3df position = m_camera->getPosition();
        vector3df target = m_camera->getTarget();
        vector3df dirVec = target - position;
        dirVec = 0.5f * dirVec;

       if(input->keyDown(W))
      {
               position += dirVec;
               target += dirVec;
      }

      if(input->keyDown(S))
     {
               position -= dirVec;
               target -= dirVec;
     }

     m_camera->setPosition(position);
     m_camera->setTarget(target);
}

Kod pisany z pamięci, bo nie mam go przy sobie, ale tak to mniej więcej wyglądało. Użymam Irrlichta.
« Ostatnia zmiana: Styczeń 31, 2012, 11:17:54 wysłana przez bonifacy »

Offline Mr. Spam

  • Miłośnik przetworów mięsnych

Offline Nargil

  • Użytkownik
    • projekty

# Styczeń 31, 2012, 12:38:33
Wydaje ci się, że z inną prędkością. Natomiast nie rozumiem po co mnożysz dirvec * 0.5.

Generalnie powinieneś go znormalizować i pomnożyć przez stałą prędkość kamery. Wtedy prędkość kamery będzie niezależna od odległości targetu.

Jeśli twoja klasa matematyczna nie ma normalizacji, to jest: dzielenie wektora przez jego długość, czyli sqrt(x*x + y*y + z*z)

Offline bonifacy

  • Użytkownik

# Luty 01, 2012, 12:56:02
Nie wydawało mi się.  Problemem bylo bindTargetAndRotation(true), parametr ustawiany w klasie kamery.

Tak czy inaczej, dzieki za pomoc.
« Ostatnia zmiana: Luty 01, 2012, 12:57:51 wysłana przez bonifacy »