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

时间:2014-02-02 14:56:36

标签: unity3d

我正在开发类似太空射击游戏的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);
}

我知道我仍然需要转换上面代码中的一些静态值,这不是一个很好的编码方式。

我的问题是如何在Android中执行此操作?我希望玩家留在屏幕上,即如果用户通过将玩家拖到最左边来移动玩家,无论他试图拖动多少,玩家应该留在屏幕的左角,这同样适用于对。简单来说,我想检测屏幕的左右边缘,并限制我的对象在这些边缘内。

我的游戏将采用横向模式。

非常感谢任何帮助。提前谢谢。

2 个答案:

答案 0 :(得分:2)

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

if(transform.position.x < screenx) {

    transform.position.x = screenx;
}

在这里,我们正在检查转换后的播放器是否在屏幕空间之外。如果是,我们将其设置为最小值 - 我假设它是screenx

答案 1 :(得分:0)

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));
}

这将是你的左下方屏幕边界