2016-12-11 1 views
0

Я делаю верхнюю вниз 2d игру и столкнулся с небольшой проблемой. Мне нужен плеер, чтобы он всегда находился в пределах экрана. Я видел людей с этой проблемой раньше и пробовал свои решения, однако ни один из них не работал с моей игрой. Это потому, что мой персонаж персонажа использует физику для передвижения. Это то, что у меня внутри моей функции FixedUpdate:Единство - Оставайтесь в пределах экрана

minScreenBounds = Camera.main.ScreenToWorldPoint(new Vector3(0, 0, 0)); 
    maxScreenBounds = Camera.main.ScreenToWorldPoint(new Vector3(Screen.width, Screen.height, 0)); 

    transform.position = new Vector3(Mathf.Clamp(transform.position.x, minScreenBounds.x + 1, maxScreenBounds.x - 1), Mathf.Clamp(transform.position.y, minScreenBounds.y + 1, maxScreenBounds.y - 1), transform.position.z); 

Если кто-нибудь знает, как исправить это, я бы очень признателен, если бы вы могли сказать мне, как.

Большое спасибо,

Tommy

+0

Вам необходимо предоставить более подробную информацию. Помогите нам помочь вам. сценарий и где проблема может быть большой. мы не знаем деталей, как вы в своем проекте. –

+0

Хорошо, я добавлю скрипт ... –

ответ

1

Сделать Rigidbody2D на экране края, как показано ниже (зеленый коллайдеров), а также управлять их масштаб/положение для вашей потребности.

enter image description here

+0

Привет, спасибо за ответ. Проблема с этим подходом заключается в том, что другие GameObjects будут сталкиваться с границами экрана. Мне нужно что-то, что ограничивает выход игрока из экрана. –

+1

Ну, маска столкновения со слоями. https://docs.unity3d.com/Manual/LayerBasedCollision.html У меня такое ощущение, что вы должны больше читать эту тему в целом. Взгляните на https://unity3d.com/learn/tutorials – Geri

+0

Посмотрев на свой код, лучше использовать 'MovePosition' и' MoveRotation' на 'Rigidbody2D', вместо этого манипулируя преобразованием напрямую. – Geri

Смежные вопросы