2017-06-21 12 views
0

私はオブジェクトが私の指に追随するゲームを作っています。しかし、私は画面上のどこかをタップするとオブジェクトが私の指に飛びつくのを望んでいません。私はこれを行うためにレイキャストを使用しています。私が指を動かすのが速すぎる場合を除き、オブジェクトは凍っています。Update()でレイキャストが動作しないUnity c#

私の理論では、Update()にあると、オブジェクトから指を離すと、ドラッグできなくなったことが検出されます。私はこれをどのように修正するのか分かりません。

public GameObject Bigball; 
public GameObject Smallball; 

// Update is called once per frame 
void Update() 
    { 
    //lets ball follow finger 
     if (Input.touchCount > 0 && Input.GetTouch(0).phase == TouchPhase.Moved || Input.GetTouch(0).phase 
     == TouchPhase.Stationary) 
    { 
     Touch touch = Input.GetTouch(0); 
     Vector3 fingerPos = touch.position; 
     RaycastHit hit; 
     Ray ray = Camera.main.ScreenPointToRay(fingerPos); 


     if (Physics.Raycast(ray, out hit) && (hit.collider.tag == "ball")) 
      { 
      Smallball.SetActive(false); 
      Bigball.SetActive(true); 
      Vector3 pos; 
      pos = new Vector3((Camera.main.ScreenToWorldPoint(Input.GetTouch(0).position)).x, 
      (Camera.main.ScreenToWorldPoint(Input.GetTouch(0).position)).y, 0); 
      Bigball.transform.position = pos; 
     } 
    } 

    else 
    { 
     Bigball.SetActive(false); 
     Smallball.SetActive(true); 
     Smallball.transform.position = new Vector3(Bigball.transform.position.x, Bigball.transform.position.y, 0); 
    } 


} 
+0

あなたはuiドラッグを使うことができますが、たぶんスピードを加えて剛体に役立ちます。 – Bijan

答えて

0

指が画面に触れたときには、レイキャストだけが一層感覚的になることがあります。そのRaycastがドラッグするオブジェクトを見つけたら、そのオブジェクトを保存して、指が画面に触れ続けている限り、そのオブジェクトをUpdate()ごとに指に追従させるだけです。

指を離したら、次のタッチがドラッグする新しいオブジェクトを見つけるまでオブジェクトを忘れてしまいます。

もう1つの方法は、Raycastsをまったく使用しないことですが、Bijanが既に述べたように、IBeginDragHandler、IDragHandler、IEndDragHandlerをビルドすることです。

関連する問題