2016-11-20 8 views
2

私はUnityでドラッグ可能なgameobjectsを作成しようとしていますが、今はマウスに追随するようにしています。マウスでオブジェクトをドラッグして値にスナップします

これは私が必要とするものではありません。私はそれがマウスがある場所に正確に行くのではなく、マウスの方向に0.375fだけ動かしたいと思います。

どのように動作するのか想像できません。何か助けていただければ幸いです。

void OnMouseDown() 
    { 
     screenPoint = Camera.main.WorldToScreenPoint(transform.parent.position); 
     offset = transform.parent.position - Camera.main.ScreenToWorldPoint(new Vector3(Input.mousePosition.x, Input.mousePosition.y, screenPoint.z)); 
    } 

    void OnMouseDrag() 
    { 
     Vector3 curScreenPt = new Vector3(Input.mousePosition.x, Input.mousePosition.y, screenPoint.z); 
     Vector3 curPos = Camera.main.ScreenToWorldPoint(curScreenPt) + offset; 
     transform.parent.position = new Vector3(curPos.x, curPos.y); 
    } 
+0

重要:今日、Unityでドラッグアンドドロップや同様の概念を実装することは間違いなく簡単です。ここでは:http://stackoverflow.com/a/37473953/294884 – Fattie

+0

ええ、afaikそれはUIの - のみ、私は実際には動作しませんので、ゲームオブジェクトに取り組んでいます – Fiffe

答えて

2

ネヴァーマインドは、私が馬鹿だ: これは私がこれまで持っているものです。

void OnMouseDown() 
{ 
    screenPoint = Camera.main.WorldToScreenPoint(transform.parent.position); 
    offset = transform.parent.position - Camera.main.ScreenToWorldPoint(new Vector3(Input.mousePosition.x, Input.mousePosition.y, screenPoint.z)); 
} 

void OnMouseDrag() 
{ 
    Vector3 curScreenPt = new Vector3(Input.mousePosition.x, Input.mousePosition.y, screenPoint.z); 
    Vector3 curPos = Camera.main.ScreenToWorldPoint(curScreenPt) + offset; 
    transform.parent.position = new Vector3(Mathf.Round(curPos.x/0.3175f) * 0.3175f, Mathf.Round(curPos.y/0.3175f) * 0.3175f); 
} 
+0

誰もここに私の男を愚か者! – Fattie

関連する問題