Я работаю над 2D-игрой, подобной Space Shooter. Я разработал его для Web и ПК, и он отлично работает. Теперь я переношу его на Android, и у меня проблема с кодом игрока.Unity 2D 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? Я хочу, чтобы игрок оставался на экране, т. Е. Если пользователь перемещает игрока, перетаскивая его в крайнее левое положение, независимо от того, сколько раз он пытается перетащить, игрок должен оставаться в левом углу экрана, и то же самое относится к правильно. Простыми словами я хочу обнаружить левый и правый края экрана и ограничить свой объект в этих краях.
Моя игра будет в ландшафтном режиме.
Любая помощь будет очень оценена. Заранее спасибо.
Благодарности @rhughes. Я добавил код ниже, чтобы исправить эту проблему: '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); ' –
@SriramKumar Молодцы! :) – rhughes