我沿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:在我的项目中,我正在使用透视摄像头
答案 0 :(得分:0)
使用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个单位。