Проблема с разрешениями и скриптом
|
|
ZVEN | Дата: Пятница, 05 Августа 2016, 14:20 | Сообщение # 1 |
почетный гость
Сейчас нет на сайте
| Приветствую всех. Решил сделать мини игру 2D, накидал все на канвас чтоб под разные разерешния растягивалось все само. Вопрос в следующем: мяч которым я буду управлять с помощью клика должен быть на канвасе или нет? Если кидаю как спрайт, то он не отображается. И еще косяк:снизу сделал ограничивающий блок, чтоб мяч ниже не падал, но столкновения нет Также почему-то не работает скрипт:
Код public class PlayerScript : MonoBehaviour {
public float speed; private Rigidbody2D rb;
void Start() { rb = GetComponent<Rigidbody2D>(); }
void Update() { Vector2 movement = new Vector2(0, 1);
if (Input.GetMouseButton(0)) { rb.AddForce(movement * speed); } } }
|
|
| |
NEBR | Дата: Пятница, 05 Августа 2016, 16:00 | Сообщение # 2 |
почти ветеран
Сейчас нет на сайте
| Мяч не должен быть UI элементом. Сделай его спрайтом. Зачем на нем бокс коллайдер, повесь круглый. И добавь не ригидбоди, а ригидбоди2д. На пол - добавь только бокс коллайдер2д. Скрипт для мяча должен работать, только рекомендую строчку if (Input.GetMouseButton(0)) заменить на if (Input.GetMouseButtonDown(0)) - в этом случае он будет подпрыгивать только один раз, в момент нажатия кнопки мыши.
King Size #Gamiron12
|
|
| |
ZVEN | Дата: Пятница, 05 Августа 2016, 23:31 | Сообщение # 3 |
почетный гость
Сейчас нет на сайте
| Цитата NEBR ( ) Мяч не должен быть UI элементом. Сделай его спрайтом. Зачем на нем бокс коллайдер, повесь круглый. И добавь не ригидбоди, а ригидбоди2д. На пол - добавь только бокс коллайдер2д. Скрипт для мяча должен работать, только рекомендую строчку if (Input.GetMouseButton(0)) заменить на if (Input.GetMouseButtonDown(0)) - в этом случае он будет подпрыгивать только один раз, в момент нажатия кнопки мыши.
Так если кидаю спрайтом, он почему-то не показывается на сцене, только серый цвет-какой-то и как-будто за сценой. Корректировка координаты z не помогает.Добавлено (05 августа 2016, 23:31) --------------------------------------------- Вот фото
|
|
| |
Lertmind | Дата: Суббота, 06 Августа 2016, 00:13 | Сообщение # 4 |
заслуженный участник
Сейчас нет на сайте
| ZVEN, потому что облачка, фон и всё остальное, что не является интерфейсом, тоже должны быть как спрайты, а не элементы UI. Сортировка спрайтов настраивается через Sorting Layer и Order in Layer у компонента Sprite Renderer, где первое это логический слой, вроде "фон" и "слой уровня игрока", а второе задаёт порядок уже внутри слоя.
Сообщение отредактировал Lertmind - Суббота, 06 Августа 2016, 00:13 |
|
| |
ZVEN | Дата: Суббота, 06 Августа 2016, 00:49 | Сообщение # 5 |
почетный гость
Сейчас нет на сайте
| А как сделать чтоб все масштабировалось? Через канвас данное дело получается отлично. Тогда канвас выходит в данном случае, вообще не нужен?
|
|
| |
Lertmind | Дата: Суббота, 06 Августа 2016, 12:39 | Сообщение # 6 |
заслуженный участник
Сейчас нет на сайте
| ZVEN, не очень понимаю, что тебе надо. При разных соотношениях сторон экрана по умолчанию высота будет оставаться, а бока расходиться/сходиться. Если хочешь одновременно изменить размер у нескольких объектов, то выдели нужные объекты и изменяй размер.
|
|
| |
ZVEN | Дата: Суббота, 06 Августа 2016, 22:36 | Сообщение # 7 |
почетный гость
Сейчас нет на сайте
| А нельзя так сделать, чтоб бока оставались одинаковыми на всех устройствах?
|
|
| |
Lertmind | Дата: Воскресенье, 07 Августа 2016, 01:50 | Сообщение # 8 |
заслуженный участник
Сейчас нет на сайте
| ZVEN, как ты себе это представляешь? Чтобы всё растягивалось? На всякий случай, я имел в виду, что по бокам становится больше или меньше видно относительно камеры. Всегда приходится ориентироваться на какой-то диапазон соотношения сторон и подстраивать "игровую часть" и "интерфейс".
|
|
| |
Tymonr | Дата: Воскресенье, 07 Августа 2016, 02:04 | Сообщение # 9 |
With OpenSource forever♥
Сейчас нет на сайте
| ZVEN, обрезать только
Если вы решили обратиться к нам за помощью, не становитесь в позицию неудачника. И не ведите себя как неудачник. Лучший способ получить быстрый и чуткий ответ, - спрашивать как победитель — спрашивать как человек умный, уверенный в себе и знающий, которому просто понадобилась помощь при решении одной конкретной проблемы. Как правильно задавать вопросы в технических форумах
|
|
| |
ZVEN | Дата: Четверг, 11 Августа 2016, 01:02 | Сообщение # 10 |
почетный гость
Сейчас нет на сайте
| Как закрепть слой в правый верхний угол? Бэкграунд больше камеры. А вот следующий слой как закрепть в правом верхнем углу для всех разрешений? Или так нельзя?Добавлено (09 августа 2016, 00:13) ---------------------------------------------
Добавлено (11 августа 2016, 01:02) --------------------------------------------- Ладно эт мелочи, высота одна и та же. Как поступить в данной ситуации: облака должны быть слева. Как на первом скрине.
|
|
| |
Lertmind | Дата: Четверг, 11 Августа 2016, 03:09 | Сообщение # 11 |
заслуженный участник
Сейчас нет на сайте
| Можно через скрипт закрепить положение, но обычно так, как ты хочешь, не делают. Если облака и солнце не игровые элементы, а только для фона, всё-таки можешь использовать UI: 1. Добавь отдельный Canvas для них 2. Выстави Render Mode -> Screen Space - Camera, в Render Camera укажи главную камеру 3. По желанию измени Sorting Layer на дальний слой, чтобы канвас рисовался как фон, либо изменяй Order in Layer как и для обычных спрайтов
Сообщение отредактировал Lertmind - Четверг, 11 Августа 2016, 03:21 |
|
| |
ZVEN | Дата: Четверг, 11 Августа 2016, 15:31 | Сообщение # 12 |
почетный гость
Сейчас нет на сайте
| А например два канваса можно использовать? (неигровые элементы + надписи кол-ва очков и т.д.) Или в идеале лучше один?
И чет третий пункт не понял, но если что отдельно потом попробую и спрошу.
|
|
| |
Lertmind | Дата: Четверг, 11 Августа 2016, 16:06 | Сообщение # 13 |
заслуженный участник
Сейчас нет на сайте
| ZVEN, можно иметь несколько Canvas, я поэтому и написал "Добавь отдельный Canvas". В твоём случае нельзя всё сделать в одном Canvas, но всё равно никаких значительных проблем возникнуть не должно. Про третий пункт уже писал, про сортировку: "Сортировка спрайтов настраивается через Sorting Layer и Order in Layer у компонента Sprite Renderer, где первое это логический слой, вроде "фон" и "слой уровня игрока", а второе задаёт порядок уже внутри слоя." Это нужно, чтобы определить какой спрайт ближе к камере. Допустим у мячика будет "Default, 0", если у Canvas выставить "Default, 1" - канвас будет перекрывать мяч, а если "Default, -1" - канвас будет позади. Если выполнить пункты 1 и 2 и ничего не изменять больше, вроде бы канвас останется позади, но лучше вынести в дальний слой.
Сообщение отредактировал Lertmind - Четверг, 11 Августа 2016, 16:09 |
|
| |