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で、遠すぎます。さもなければ、エンドポスは私のマウスに完全に追従し、私の実際のマウスには整列していません。
問題を見つけ出すための助けがあれば幸いです。
問題をうまく説明できない場合は、尋ねてください。