2017-09-09 81 views
0

我跟着這個教程https://www.youtube.com/watch?v=vsdIhyLKgjc寫了這樣的代碼:帆布錯位?

public class DrawRect : MonoBehaviour { 
    [SerializeField] 
    public RectTransform rect; 

    private Vector3 startPos; 
    private Vector3 endPos; 

    void Start() { 
     rect.gameObject.SetActive (false); 
    } 

    void Update() { 
     if (Input.GetMouseButtonDown(0)) { 
      RaycastHit hit; 

      if (Physics.Raycast (Camera.main.ScreenPointToRay (Input.mousePosition), out hit, Mathf.Infinity)) { 
       startPos = hit.point; 
      } 
     } 

     if (Input.GetMouseButtonUp(0)) { 
      rect.gameObject.SetActive (false); 
     } 

     if (Input.GetMouseButton (0)) { 
      if (!rect.gameObject.activeInHierarchy) { 
       rect.gameObject.SetActive (true); 
      } 
      endPos = Input.mousePosition; 

      Vector3 squareStart = Camera.main.WorldToScreenPoint (startPos); 
      squareStart.z = 0f; 

      Vector3 center = (squareStart + endPos/2f); 

      rect.position = center; 

      float sizeX = Mathf.Abs (squareStart.x - endPos.x); 
      float sizeY = Mathf.Abs (squareStart.y - endPos.y); 

      rect.sizeDelta = new Vector2 (sizeX, sizeY); 
     } 
    } 
} 

的問題是,每當我使用它,它的錯位。比例是正確的,但startpos和endpos總是屏幕的三分之一太遠,稍微偏右。否則endpos完全跟隨我的鼠標,保持與我的實際鼠標不匹配。

任何幫助找出問題,非常感謝。

如果我解釋不好的問題,就問。

回答

1

爲什麼你在這裏問你的問題,當你的鏈接教程中的答案是逐字的?

Vector3 center = (squareStart + endPos/2f); 

該分區優先於括號。

Vector3 center = (squareStart + endPos)/2f;