Unity3d Unity 2D Android-将对象限制在屏幕内

Unity3d Unity 2D Android-将对象限制在屏幕内,unity3d,Unity3d,我正在制作一个类似于《太空射手》的2D游戏。我为Web和PC开发了它,效果非常好。我现在正在把它移植到Android上,我对播放器代码有一个问题 玩家(太空船)将位于屏幕底部,并在屏幕内从左向右移动。我写了一段代码,将播放器限制在屏幕内,下面是代码: private float screenx = Screen.width -20; playerPosScreen = Camera.main.WorldToScreenPoint(transform.position); if(Input.Ge

我正在制作一个类似于《太空射手》的2D游戏。我为Web和PC开发了它,效果非常好。我现在正在把它移植到Android上,我对播放器代码有一个问题

玩家(太空船)将位于屏幕底部,并在屏幕内从左向右移动。我写了一段代码,将播放器限制在屏幕内,下面是代码:

private float screenx = Screen.width -20;
playerPosScreen = Camera.main.WorldToScreenPoint(transform.position);

if(Input.GetKey(KeyCode.RightArrow) && playerPosScreen.x < screenx)
{
    transform.Translate(Vector3.right * speed * Time.deltaTime * 0.4f);
}

if (Input.GetKey(KeyCode.LeftArrow) && playerPosScreen.x > 20)
{
    transform.Translate(-Vector3.right * speed * Time.deltaTime * 0.4f);
}
private float screenx=Screen.width-20;
playerPasscreen=Camera.main.WorldToScreenPoint(transform.position);
if(Input.GetKey(KeyCode.RightArrow)和&playerpossscreen.x20)
{
transform.Translate(-Vector3.right*速度*Time.deltaTime*0.4f);
}
我知道我仍然需要在上面的代码中转换一些静态值,而这并不是编写代码的好方法

我的问题是在Android中如何做到这一点?我希望玩家留在屏幕上,也就是说,如果用户通过将玩家拖动到最左边来移动玩家,无论他尝试拖动多少次,玩家都应该停留在屏幕的左角,右角也是如此。简单地说,我想检测屏幕的左边缘和右边缘,并将我的对象限制在这些边缘内

我的游戏将在横向模式


任何帮助都将不胜感激。提前感谢。

这类问题通常在以下庄园解决:

if(transform.position.x < screenx) {

    transform.position.x = screenx;
}
if(transform.position.x
这里,我们正在检查转换后的播放器是否超出屏幕空间。如果是,我们将其设置为最小值-我假设是
screenx

public Transform player;
public float distanceFromCamera=10;
public float offsetx=.05f;
public float offsety=.05f;
void Awake()
{

    player.position=Camera.main.ViewportToWorldPoint(new Vector3(offsetx,offsety,distanceFromCamera));
}

这将是您的左下屏幕边界

谢谢@rhughes。我添加了以下代码来解决这个问题:
vector3viewpos=Camera.main.WorldToViewportPoint(transform.position);viewPos.x=Mathf.Clamp01(viewPos.x);viewPos.y=Mathf.Clamp01(viewPos.y);transform.position=Camera.main.ViewportToWorldPoint(viewPos)