2016-04-16 7 views
1

私のタッチコントロールにはいくつか問題があります。タッチとドラッグの問題Unity 2Dゲーム

1)私のゲームは2Dです。これを私のアンドロイドデバイスでテストしたところ、右のタッチから左のタッチに移動すると2D画像がほとんど消えてしまいます。オブジェクトは3Dオブジェクトとして扱われています。私はこれがZ空間と関係があると思います。

2)私はこのビデオのようにキャラクターを動かすことができます - https://www.youtube.com/watch?v=5hckY75j_lg。この場合、画面に触れる場所はプレーヤー(頭)をつかんで、指が正確に動く場所です。

助けていただけたら助かります。

ここに私のコードだ:

パブリッククラスTouchLogic:MonoBehaviour {

public static int currTouch = 0; 
private Ray ray; 
private RaycastHit rayHitInfo = new RaycastHit(); 
[HideInInspector ] 
public int touch2Watch=64; 

// Update is called once per frame 
void Update() { 
    if (Input.touches.Length <= 0) { 
    } else { 
     for (int i = 0; i < Input.touchCount; i++) { 
      currTouch = i; 
      if (this.GetComponent <GUITexture >() != null && (this.GetComponent <GUITexture >().HitTest (Input.GetTouch (i).position))) { 
       if (Input.GetTouch (i).phase == TouchPhase.Began) { 
        this.SendMessage ("OnTouchBegan"); 
       } 
       if (Input.GetTouch (i).phase == TouchPhase.Ended) { 
        this.SendMessage ("OnTouchEnded"); 
       }  
       if (Input.GetTouch (i).phase == TouchPhase.Moved) { 
        this.SendMessage ("OnTouchMoved"); 
       } 
      } 
      ray = Camera.main.ScreenPointToRay (Input.GetTouch (i).position); 
      switch (Input.GetTouch (i).phase) { 
      case TouchPhase .Began: 
       this.SendMessage ("OnTouchBeganAnywhere"); 
       if (Physics.Raycast (ray, out rayHitInfo)) 
        rayHitInfo.transform.gameObject.SendMessage ("OnTouchBegan2D"); 
       break; 
      case TouchPhase .Ended : 
       this.SendMessage ("OnTouchEndedAnywhere"); 
       if (Physics.Raycast (ray, out rayHitInfo)) 
        rayHitInfo.transform.gameObject.SendMessage ("OnTouchEnded2D"); 
       break; 
      case TouchPhase .Moved : 
       this.SendMessage ("OnTouchMovedAnywhere"); 
       if (Physics.Raycast (ray, out rayHitInfo)) 
        rayHitInfo.transform.gameObject.SendMessage ("OnTouchMoved2D"); 
       break; 
      case TouchPhase .Stationary : 
       this.SendMessage ("OnTouchStayedAnywhere"); 
       if (Physics.Raycast (ray, out rayHitInfo)) 
        rayHitInfo.transform.gameObject.SendMessage ("OnTouchStayed2D"); 
       break; 
      } 
     } 
    } 
} 

}

パブリッククラスFollowTouch:TouchLogic {

public float speed=1f; 
private Vector3 finger; 
private Transform myTrans, camTrans; 
void Start() { 
    myTrans = this.transform; 
    camTrans = Camera.main.transform; 
} 
void LookAtFinger(){ 
    Vector3 tempTouch=new Vector3 (Input.GetTouch (touch2Watch).position .x,Input.GetTouch (touch2Watch).position .y, 
     camTrans .position.y-myTrans .position .y); 
    finger = Camera.main.ScreenToWorldPoint (tempTouch); 
    myTrans.LookAt (finger); 
    myTrans.Translate (Vector3.forward * speed * Time.deltaTime); 
} 
void OnTouchMovedAnywhere(){ 
    LookAtFinger(); 
} 
void OnTouchStayedAnywhere(){ 
    LookAtFinger(); 
} 
void OnTouchBeganAnywhere(){ 
    touch2Watch = TouchLogic.currTouch; 
} 

答えて

0

あなたは、2Dのゲームにあなたを作っている場合使用する必要があります

Vector3.up 

代わりの

Vector3.forward