2017-02-12 26 views
0

我正在嘗試點擊一個GameObject並以與鼠標相同的速率移動它。我能夠讓對象移動,但我必須做一些瘋狂的修改,以便它不會在屏幕上消失。如何以與onMouseDrag相同的速度移動GameObject?

注意:我的最終目標將是爲移動設備完成此操作,但我始於鼠標。

public class ItemController : MonoBehaviour { 

    private Vector3 startPos; 
    private bool ObjectMouseDown = false; 

    void Update() 
    { 
     Debug.Log(Input.mousePosition + new Vector3(0,0,15)); 
    } 

    void OnMouseDown() 
    { 
     startPos = transform.position; 
     ObjectMouseDown = true; 
    } 

    void OnMouseDrag() 
    { 
     if (ObjectMouseDown == true) 
     { 
      transform.position = Vector3.MoveTowards(transform.position, Input.mousePosition + new Vector3(0, 0, 5), Time.deltaTime * 2f); 
      //  transform.position = Vector3.MoveTowards(transform.position, endPosition, speed * Time.deltaTime); 
     } 
    } 

    void OnMouseUp() 
    { 
     ObjectMouseDown = false; 
    } 
} 

請注意,我必須添加一個15的z值,以便對象不會浮出屏幕。

任何幫助都會很棒。

回答

1

Input.mousePosition返回屏幕上的絕對像素位置而不是世界位置。您需要使用Camera.ScreenToWorldPoint像這樣

Vector3 mouseWorldPos = Camera.main.ScreenToWorldPoint(Input.position.x, Input.position.y, 15); 
transform.position = mouseWorldPos; 

你可以在這裏閱讀更多https://docs.unity3d.com/ScriptReference/Camera.ScreenToWorldPoint.html

+0

感謝那些工作完美! –

相關問題