2017-09-09 11 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は常に画面の1/3で、遠すぎます。さもなければ、エンドポスは私のマウスに完全に追従し、私の実際のマウスには整列していません。

問題を見つけ出すための助けがあれば幸いです。

問題をうまく説明できない場合は、尋ねてください。

答えて

1

あなたがリンクしているチュートリアルで答えがそのままであるときに、あなたはここであなたの質問をしていますか?

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

括弧が優先されます。

Vector3 center = (squareStart + endPos)/2f; 
関連する問題