2016-07-24 4 views
0

私はタッチデバイス用の2Dゲームを構築しようとしています。今私は何かをするために現場のコライダーに対して光線を投げかけようとしています。たとえば、ヒットした場合、左のボタンを押すとプレーヤーは左に移動します。RaycastHit2D - 2Dゲームのタッチ

私はGoogleとYouTubeでどこでも検索しましたが、これを行う方法がわかりませんでした。私はユニティとプログラミング全般については新しいですが、私が検索したことから、2Dゲームの画面上のタッチを検出したいのであれば、3Dゲームよりも複雑です!

void Update() 
{ 
if (Input.touchCount > 0) 
{ 
    for (int i = 0; i < Input.touchCount; i++) 
    { 
    if (Input.GetTouch(i).phase == TouchPhase.Began) 
    { 
    Ray2D ray = Camera.main.ScreenToWorldPoint (Input.GetTouch(i).position); 
    RaycastHit2D hit; 

    if (Physics2D.Raycast (ray, out hit))) 
    { 
    if (hit.transform.gameobject.name == "left") 
    { 
     // Do Something 
    } 
    } 
    } 
    } 
} 

答えて

0

知らんこのヘルプであれば、これは私はそれを行う方法です。

//Get current worldspace position of mouse cursor 
    RaycastHit2D[] hits = Physics2D.LinecastAll(clickedPos,clickedPos,theLayer); 

    // Copy Linecast to HashSet (unique records), clean out the "Background" GameObject 
    foreach (RaycastHit2D arf2D in hits) { 
     //linecast_GameObject = GameObject.FindWithTag(arf2D.collider.tag); 
     linecast_GameObject = GameObject.Find(arf2D.collider.name); 

     //if (linecast_GameObject.name != "Background") { 
     if (linecast_GameObject.tag != "Background") { 
      linecast_GameObject_HashSet.Add(linecast_GameObject); 
      clickedOnTheBackground = false; 
     } 
     else if (hits.Length == 1) { 
      clickedOnTheBackground = true; 
      fingerSelection_GO = GameObject.FindWithTag("Dummy_GameObject"); 
      //fingerSelection_GO = GameObject.Find("Dummy_GameObject"); 
     } 
    } 
関連する問題