2012-03-13 24 views
1

私のプロジェクトで一人称カメラを作ろうとしています。私はjogl - 一人称カメラ

http://www.morrowland.com/apron/tutorials/gl/gl_camera_3b.zip

キーボードの動きはOKですが、マウスの動きが奇妙である、このチュートリアルに従いました。私は、java + jolgを使用していますが、私はそこには大きな違い

はここではありません回転させるための責任の二つの方法であると思う:

public void rotate(float speed) { 
    aux = mView.minus(mPos); 
    mView.z = (float) (mPos.z + Math.sin(Math.toRadians(speed)) * aux.x + Math.cos(Math.toRadians(speed)) 
      * aux.z); 
    mView.x = (float) (mPos.x + Math.cos(Math.toRadians(speed)) * aux.x - Math.sin(Math.toRadians(speed)) 
      * aux.z); 

} 

    public void mouseMove(float x, float y) { 
    float angle_y = 0.0f; 
    float angle_z = 0.0f; 

    if ((x == w/2) && (h/2 == y)) 
     return; 

    robot.mouseMove(w/2, h/2); 


    angle_y = (float) ((w/2 - x))/1000; 
    angle_z = (float) ((h/2 - y))/1000; 


    mView.y += angle_z * 2; 

    if ((mView.y - mPos.y) > 8) 
     mView.y = mPos.y + 8; 
    if ((mView.y - mPos.y) < -8) 
     mView.y = mPos.y - 8; 

    rotate(-angle_y); // Rotate 
} 

をし、リスナーがあります:

  public void mouseMoved(MouseEvent e) { 
      Point p = e.getPoint(); 
      camera.mouseMove((float)p.getX(),(float) p.getY()); 
     } 
+0

「奇妙です」で少し拡大してください。問題の詳細を教えてください –

+0

カメラが正しく動作していません。すべての方向とその非常に不安定に同じではない移動します。 – enkor

答えて

1

Javaがキャンバスからポイントを取得する方法に問題がありました。私は

Point p = MouseInfo.getPointerInfo().getLocation(); 

Point p = e.getPoint(); 

を変更するのであればそれは動作します。

ご迷惑をおかけして申し訳ありません。私はこの質問を忘れてしまった。

0

私がしようとするだろうが、タイマを入れて毎回更新するだけです。マウスが火事を動かすたびにフレームを再計算しようとすると、あなたは過負荷になります。

関連する問題