我正在开发类似太空射击游戏的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中执行此操作?我希望玩家留在屏幕上,即如果用户通过将玩家拖到最左边来移动玩家,无论他试图拖动多少,玩家应该留在屏幕的左角,这同样适用于对。简单来说,我想检测屏幕的左右边缘,并限制我的对象在这些边缘内。
我的游戏将采用横向模式。
非常感谢任何帮助。提前谢谢。
答案 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));
}
这将是你的左下方屏幕边界