游戏对象超出屏幕边缘
gameObject out of screen edge
我的 2D 游戏角色有这段代码。它在随机屏幕位置重生我的角色时工作正常,但问题是这段代码适用于我的游戏角色中心,我的意思是它生成随机范围的中心位置并且在屏幕边缘我的角色将一半超出屏幕...我需要此代码在任何 Android 设备上运行,但我不知道如何解决这个问题。任何人一个简单的解决方案?
对不起我的英语初学者。
//Generate Random X
float generateX()
{
float x = Random.Range(Camera.main.ScreenToWorldPoint(new Vector2(0, 0)).x, Camera.main.ScreenToWorldPoint(new Vector2(Screen.width, 0)).x);
return x;
}
//Generate Random Y
float generateY()
{
float y = Random.Range(2.0f, Camera.main.ScreenToWorldPoint(new Vector2(0, Screen.height)).y);
return y;
}
void generateCoordinates()
{
transform.position = new Vector2(generateX(), generateY());
}
由于您的 2D 角色是精灵,因此它必须具有精灵渲染器组件。你可以通过以下方式获得它的界限:
Bounds bounds = transform.GetComponent<SpriteRenderer>().bounds;
您可以像这样编辑代码:
float generateX()
{
float x = Random.Range(Camera.main.ScreenToWorldPoint(new Vector2(0, 0)).x, Camera.main.ScreenToWorldPoint(new Vector2(Screen.width, 0)).x);
//add/remove extents to x value to keep sprite in bounds of screen
if(x < 0)
x += bounds.max.x;
else
x -= bounds.max.x;
return x;
}
我的 2D 游戏角色有这段代码。它在随机屏幕位置重生我的角色时工作正常,但问题是这段代码适用于我的游戏角色中心,我的意思是它生成随机范围的中心位置并且在屏幕边缘我的角色将一半超出屏幕...我需要此代码在任何 Android 设备上运行,但我不知道如何解决这个问题。任何人一个简单的解决方案?
对不起我的英语初学者。
//Generate Random X
float generateX()
{
float x = Random.Range(Camera.main.ScreenToWorldPoint(new Vector2(0, 0)).x, Camera.main.ScreenToWorldPoint(new Vector2(Screen.width, 0)).x);
return x;
}
//Generate Random Y
float generateY()
{
float y = Random.Range(2.0f, Camera.main.ScreenToWorldPoint(new Vector2(0, Screen.height)).y);
return y;
}
void generateCoordinates()
{
transform.position = new Vector2(generateX(), generateY());
}
由于您的 2D 角色是精灵,因此它必须具有精灵渲染器组件。你可以通过以下方式获得它的界限:
Bounds bounds = transform.GetComponent<SpriteRenderer>().bounds;
您可以像这样编辑代码:
float generateX()
{
float x = Random.Range(Camera.main.ScreenToWorldPoint(new Vector2(0, 0)).x, Camera.main.ScreenToWorldPoint(new Vector2(Screen.width, 0)).x);
//add/remove extents to x value to keep sprite in bounds of screen
if(x < 0)
x += bounds.max.x;
else
x -= bounds.max.x;
return x;
}