我正在开发一个类似于太空射击的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中实现这一点? 我希望游戏玩家呆在屏幕上,即使用户通过将其向极左拖动,无论他试图拖动多少次,玩家都应该停留在屏幕的左上角,右边也是如此。简单来说,我想检测屏幕的左右边缘,并将对象限制在这些边缘内。
我的游戏将处于横向模式。
非常感谢您提供的任何帮助。 提前致谢。
Vector3 viewPos = Camera.main.WorldToViewportPoint(transform.position); viewPos.x = Mathf.Clamp01(viewPos.x); viewPos.y = Mathf.Clamp01(viewPos.y); transform.position = Camera.main.ViewportToWorldPoint(viewPos);
- Sriram Kumar