1

私のゲームでは、ユーザーが指をスワイプすることに基づいてカメラを動かしたいと考えています。私の問題は、誰かが画面から指を離して再び下に置くと、カメラが新しい位置にジャンプすることです...座標に関係していると推測しています。画面から指を離したところ、カメラがジャンプします。コードは次のとおりです。

 var speed : int = 1;

 var lastPoint : Vector2; //make this private if you want to.

 function Update()
 {

     var offset : float; //offset of the touch from last frame     

     if(Input.touches.Length  0)//make sure we have a touch in the first place
     {

          var evt : Touch = Input.touches[0];   //setting up touch events so we can get fancy.
          if(evt.phase == TouchPhase.Began)    //this is the first frame the screen has been touched for, simply save the point.
          {
               lastPoint == evt.position;
          }
          else if(evt.phase == TouchPhase.Moved
          {
              offset = evt.position.x - lastPoint.x ;//take the difference

              //I'm going to use Transform.Rotate because it's handy dandy

              transform.Rotate(0,offset * speed,0);

              //save the new "lastPoint"

              lastPoint = evt.position;
         }
         else if(evt.phase == TouchPhase.Ended)
         {
             //If you want the object to drift after you spin it you can make a function to go here.
             //To do this, take the speed of the rotation and continue to rotate all while subtracting off of the speed.
             //I would use the Transform.Rotate function on this too.
             //If you need me to I could write this function too.

         }
     }
 }

カメラを再開し、誰かが再び指を下ろしたときにジャンプしないようにする解決策は何ですか?

問題を解決するためのより良い解決策/より効率的な方法があれば、私はそれをやり直しても構わないと思っています..

どうもありがとう!

4

1 に答える 1

0

提供されたコードは問題ないようです。必要なのは、ユーザーが押していないときにフレームごとに lastPoint を更新することだけです。または、ユーザーがいつ押し始めたかがわかっている場合は、オフセットを計算する前に lastPoint を現在の位置に設定します。このようにして、ユーザーが画面に触れる最初のフレームのオフセットはゼロになります。

于 2013-10-29T14:25:19.540 に答える