2016-08-13 6 views
0

ユニティの新機能でモバイル2dゲームを開発しました。画面中心の前後にタッチするとオブジェクトを左右に動かせるようになりました。しかし、オブジェクトに触れてそれをx軸上にドラッグして、指が画面にタッチして移動している間にオブジェクトを指の同じx位置に配置したい場合は、 どのようにすればよいでしょうかそれを正しく: ここで私は、画面中央の前または後に触れた場合、私は、オブジェクトを移動していますかのコードは次のとおりです。ユニティゲーム指の動きでオブジェクトをドラッグ

public class paddle : MonoBehaviour { 

    public Rigidbody2D rb; 
    public float speed; 
    public float maxX; 
    bool currentisAndroid=false; 
    // Use this for initialization 
    void Start() { 
     rb = GetComponent<Rigidbody2D>(); 
     #if UNITY_ANDROID 
     currentisAndroid=true; 
     #else 
     currentisAndroid=false; 
     #endif 
    } 

    // Update is called once per frame 
    void Update() { 
     if (currentisAndroid == true) { 
      if (Input.GetTouch (0).position.x < Screen.width/2 && Input.GetTouch (0).phase == TouchPhase.Stationary) 
       moveLeft(); 
      else if (Input.GetTouch (0).position.x > Screen.width/2 && Input.GetTouch (0).phase == TouchPhase.Stationary) 
       moveRight(); 
      else 
       stop(); 

     } else { 
      float x = Input.GetAxis ("Horizontal"); 
      //if (Input.GetTouch (0).position.x == rb.position.x && Input.GetTouch (0).phase == TouchPhase.Moved) 
      if (x == 0) 
       stop(); 
      if (x < 0) 
       moveLeft(); 
      if (x > 0) 
       moveRight(); 

      Vector2 pos = transform.position; 
      pos.x=Mathf.Clamp (pos.x,-maxX,maxX); 
      transform.position = pos; 
     } 


    } 
    void moveLeft() 
    { 
     rb.velocity = new Vector2 (-speed, 0); 
    } 
    void moveRight() 
    { 
     rb.velocity = new Vector2 (speed, 0); 
    } 
    void stop() 
    { 
     rb.velocity = new Vector2 (0, 0); 
    } 
    public float getposition() 
    { 
     return rb.position.y; 
    } 
} 

答えて

0

最も簡単な方法:

はコンポーネントDragRigidbodyスクリプトを追加して、マウスやタッチスクリーンに触れる経由でオブジェクトをドラッグすることができます。

0

私が正しく理解していれば:
1 - レイキャストを指の位置​​から垂直にあなたのカメラでシーン。
2 - ヒットしたオブジェクトを選択します。
3ワールド座標にカメラをマップし、地図オブジェクトまたはゲームオブジェクト\オブジェクトを使用してレイのヒットポイントに従ってそのオブジェクトを移動します。

  • Physics.Raycast();
  • RaycastHit.collider();
  • Camera.main.ScreenToWorldPoint(Input.GetTouch(< 0または1またはすべて>)の位置);

マップ上でオブジェクトを移動したい場合は、タッチを追跡したり、コーナーに近づいたときにカメラをそのダイレクト(水平 - 垂直)上で動かすことができます。

関連する問題