Среда, 27 Ноября 2024, 00:08

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Проблема с разрешениями и скриптом
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
  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг