2016-10-04 6 views
0

私は自分のgameobjectをモバイルデバイス用のタッチで移動したいです。そのプレイヤーは画面のどこにでも触れて指を動かすことができ、ゲームオブジェクトは動きませんタッチ位置。ここUnity3Dで指で動く方法タッチ

これまでのところ、私は

void Update() { 

    if (Input.touchCount > 0) 
    { 
     Touch _touch = Input.GetTouch(0); // screen has been touched, store the touch 

     if(_touch.phase == TouchPhase.Moved) // finger moved 
     { 
      //offset = Camera.main.ScreenToWorldPoint(new Vector3(_touch.position.x, _touch.position.y, theplayer.transform.position.z)) - theplayer.transform.position; 

      touchPos = Camera.main.ScreenToWorldPoint(new Vector3(_touch.position.x, _touch.position.y, theplayer.transform.position.z)); 

      theplayer.transform.position = Vector2.Lerp(theplayer.transform.position, touchPos, Time.deltaTime*5f); 

     } 
     else if(_touch.phase == TouchPhase.Ended){ 
      touchPos = Vector3.zero; 
      offset = Vector3.zero; 
     } 

    } 

} // end 

をしたスクリプトがほとんど機能していますが、問題は、私はゲームオブジェクトを参照してくださいカントので、私は、画面上で指の下にゲームオブジェクトの動きをタッチしたときである私のスクリプトです。私はこれを望んでいない私は画面上の任意の場所に触れたいと指の位置に移動しないで指で移動します。

ありがとうございました。

答えて

1

私は解決コードをここに自分自身で解決しました。

// Update is called once per frame 
    void Update() { 

     if (Input.touchCount > 0) 
     { 
      _touch = Input.GetTouch(0); // screen has been touched, store the touch 

      if(_touch.phase == TouchPhase.Began){ 
       isDragging = true; 

       offset = Camera.main.ScreenToWorldPoint(new Vector2(_touch.position.x, _touch.position.y)) - theplayer.transform.position; 

      } 
      else if(_touch.phase == TouchPhase.Ended){ 
       offset = Vector2.zero; 
       isDragging = false; 
      } 

     } 

     if(isDragging){ 
      Vector2 _dir = Camera.main.ScreenToWorldPoint(new Vector2(_touch.position.x, _touch.position.y)); 
      _dir = _dir - offset; 

      theplayer.transform.position = Vector2.Lerp(theplayer.transform.position, _dir, Time.deltaTime * speed); 

     } 


    } // end 
+0

これは完全なスクリプトではありません。スピード、isDragging(boolタイプ)などの変数を宣言する必要があります。 –

関連する問題