2017-06-12 15 views
0

私は、世界のゲームオブジェクトのデルタ位置にユーザータッチデルタ位置を変換したいと思いますか?世界デルタへのユニティスクリーンデルタ

//drag 
    if (duringmove && (Input.touchCount > 0 && Input.GetTouch(0).phase == TouchPhase.Moved)) 
    { 
     Debug.Log("will move " + progressTrans.gameObject.name); 
     endPos = Camera.main.ScreenToWorldPoint(Input.GetTouch(0).position); 

     //should convert te deltaPos here 
     progressTrans.localPosition += Vector3.right * Input.GetTouch(0).deltaPosition.x; 
     progressTrans.localPosition = new Vector3(Mathf.Clamp(progressTrans.localPosition.x, mostLeft, mostRight), progressTrans.localPosition.y, progressTrans.localPosition.z); 


    } 

あなたのオブジェクトがそのtransform.position.zが時間とともに変化することはありません、あなたはこのようなものを使用することができるようですので、私は正射投影モード

+0

2Dゲームが_Screen Space - Overlay_キャンバスの内側にある場合、 'Input.GetTouch(0).delPosition'の値は、適用したい' localPosition'デルタと同じでなければなりません。 'endPos = [...]'行がなぜここにあるのかも分かりません。 – Kardux

+0

@Karduxは返信をありがとう、gameobjectはキャンバスにはなく、endPosはおそらくそれ以降の使用を目的としています。 – armnotstrong

答えて

0

でカメラを使用して2Dのゲームを構築しています注:このことができます

//drag 
if (duringmove && (Input.touchCount > 0 && Input.GetTouch(0).phase == TouchPhase.Moved)) 
{ 
    Debug.Log("will move " + progressTrans.gameObject.name); 

    Vector3 touchPosition = Input.GetTouch(0).position; 
    touchPosition.z = progressTrans.position.z; 

    // World touch position 
    endPos = Camera.main.ScreenToWorldPoint(touchPosition); 
    // To local position 
    progressTrans.InverseTransformPoint(endPos); 

    endPos.x = Mathf.Clamp(endPos.x, mostLeft, mostRight); 
    endPos.y = progressTrans.localPosition.y; 
    endPos.z = progressTrans.localPosition.z; 

    // If you need the delta (to lerp on it, get speed, ...) 
    Vector3 deltaLocalPosition = endPos - progressTrans.localPosition; 

    progressTrans.localPosition = endPos; 
} 

希望、