這將是一個較長的答案,所以請在這裏忍受我。
請注意,本文假設您使用正交相機 - 使用的公式不適用於透視相機。
據我所知,你的願望是保持你的對象在屏幕邊界內。 Unity中的屏幕邊界由相機尺寸和屏幕尺寸的組合決定。
float height = Camera.main.orthographicSize * 2;
相機的正投影尺寸決定世界單位屏幕的尺寸的一半。乘以這個值將導致屏幕頂部和底部之間的世界單位數量。
要從此值獲得寬度,我們將該值乘以屏幕寬度除以屏幕高度。
float width = height * Screen.width/Screen.height;
現在我們有我們屏幕的尺寸,但我們仍然需要保持對象在這些邊界內。
首先,我們創建一個Bounds
類型的實例,我們將使用該實例確定該位置的最大值和最小值。我們使用Vector3.zero
因爲我們的邊界實例的中心
Bounds bounds = new Bounds (Vector3.zero, new Vector3(width, height, 0));
注應該是世界的中心。這是你的物體應該能夠在裏面移動的區域的中心。
最後,根據我們得到的界限的屬性,我們限制對象的位置值。
Vector3 clampedPosition = transform.position;
clampedPosition.x = Mathf.Clamp(clampedPosition.x, bounds.min.x, bounds.max.x);
transform.position = clampedPosition;
這應該確保您的對象永遠不會離開屏幕的邊界!
使用'Screen.width'和'Screen.height'並儘量避免硬編碼變量。 –
感謝您的回放。你能解釋如何使用screen.width和height嗎? –
我會嘗試,但是我沒有足夠的信息來幫助您在上下文中使用它。你能發佈你想要實現的圖像嗎? –