簡體   English   中英

從屏幕空間到世界空間的屏幕寬度Unity3D

[英]Screen Width from screen space into world space Unity3D

我沿X軸實例化一個游戲對象。 這是我的代碼:

public Transform brick;

void Update()
{
   for (int x = 0; x < Screen.width; x++)
   {
     Instantiate (brick, new Vector3 (x, transform.position.y, 0), Quaternion.identity);
   }
}

但是Screen.width的值是以像素為單位的問題,因此,當我實例化對象時,它越過了圖片中的紅線。 如果我使用ScreenToWorldPoint,請在我的代碼中統一使用它,該如何使用呢?

PS:在我的項目中,我正在使用透視相機

在此處輸入圖片說明

使用ViewportToWorldPoint可能更容易。 您可以按以下方式使用它:

public Transform brick;

void Update()
{
    Vector3 left = camera.ViewportToWorldPoint(new Vector3(0.0F, 0.0F, camera.nearClipPlane));
    Vector3 right = camera.ViewportToWorldPoint(new Vector3(1.0F, 0.0F, camera.nearClipPlane));

    for (float x = left.x; x < right.x; x = x + 1.0F)
    {
        Instantiate (brick, new Vector3 (x, transform.position.y, 0), Quaternion.identity);
    }
}

請注意,您的大多數左側和右側積木可能仍會延伸超出屏幕末端。 這是因為積木游戲對象的原點可能位於立方體網格的中心。 您可以按如下所示修改for循環來更正此問題:

for (float x = left.x + 0.5F; x < right.x - 0.5F; x = x + 1.0F)

這樣,您從左側開始0.5個單位,從右側開始0.5個單位。 顯然,這假設您的積木大小為1.0單位。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM