2012-03-13 13 views
0

私のスケーリングが私のOpenGLカメラで非常に奇妙な動作をしている理由を理解しようとしています。 その目的はズームインとズームアウトですが、スケーリングは非常にランダムです。ジェスチャーを正確にスケーリングしない(ズーム)

HERESに私のコード:あなたは乗法で何かを持っていて、それを添加したい場合は

- (void)pinchDetected:(UIPinchGestureRecognizer *)pinchRecognizer 
{ 
    NSLog (@"%@", @"Pinching"); 

    if (pinchRecognizer.state == UIGestureRecognizerStateBegan || 
       pinchRecognizer.state == UIGestureRecognizerStateChanged || 
       pinchRecognizer.state == UIGestureRecognizerStateEnded) { 
     currentScale = pinchRecognizer.scale; 
    } 

    if(lastScale < currentScale) { 
     _camera.z += currentScale * 0.01f; 
     lastScale = currentScale; 
    } 

    if (lastScale > currentScale) 
    { 
     _camera.z -= currentScale * 0.01f; 
     lastScale = currentScale; 
    } 

} 
+0

、基本的に連続的な要素でスケールしていません。それが理にかなっていれば? – JavaCake

答えて

1

は、ログを取る必要があります。

それは随時変化し
- (void)pinchDetected:(UIPinchGestureRecognizer *)pinchRecognizer 
{ 
    if ((gesture.state == UIGestureRecognizerStateBegan) || 
     (gesture.state == UIGestureRecognizerStateChanged) || 
     (gesture.state == UIGestureRecognizerStateEnded)) { 
     _camera.z += log(gesture.scale); // you'll probably want to multiply this by some constant 
     gesture.scale = 1.0; 
    } 
} 
+0

より完全な例を教えてください。これは正しく動作しないためです。 – JavaCake

+0

これは完全な例です。私が私のコメントで言ったように、あなたがする必要があるのは、ログに定数を乗じることだけです。 '_camera.z + = someConstant * log(gesture.scale);' someConstantはいくつかの数字です。 – yuji

+0

私はそれをはっきりと理解していますが、ピンチインやピンチアウトでは滑らかではなく、逆さまのピンチでは必ずしも反応するとは限りません。ジェスチャー状態に何か問題がありますか? – JavaCake