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完全跟隨我的鼠標,保持與我的實際鼠標不匹配。
任何幫助找出問題,非常感謝。
如果我解釋不好的問題,就問。