Пятница, 22 Ноября 2024, 17:29

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

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
[2d] Стены (Collision) UNITY
TiodorДата: Четверг, 20 Февраля 2014, 19:32 | Сообщение # 1
участник
Сейчас нет на сайте
В общем дело такое:
Если использовать ригидбоди и двигать спайт с его помощью, то максимальная скорость это вроде 100. Если я не ошибаюсь. Но у меня выходит только так.
По-этому движение я сделал так:

Код
player.transform.position += player.transform.up * speed * Time.deltaTime;


Но тут пришла другая проблема.
По бокам у нас есть стены, которые должны служить барьерами. Но если навешать на стены коллижн, то игрок будет заходить на эту стенку и просто сползать. А мне надо, чтобы просто глухой барьер был.
Если, что: вид сверху.


VK: Tiodor
lentinantДата: Суббота, 22 Февраля 2014, 08:54 | Сообщение # 2
ленивый программист
Сейчас нет на сайте
А почему не в разделе для юнити?
В общем, три варианта. Первый - ты до конца разбираешься с ригидбоди, и это все решаетсся посредством физики. Второй - прописываешь OnCollisionEnter, смотришь по параметрам, левая ли это стенка или правая, и смотришь, влево или вправо двигается твой персонаж, и, в зависимости от этих пунктов, ограничиваешь движение. То есть, если ты двигаешься влево, включается OnCollisionEnter, и коллайдер в параметре находится слева от персонажа, то ты делаешь так, чтобы персонаж больше не мог двигаться влево, только вправо. Третий - привязка к координатам - стены как фикция, и просто делаешь граничные координаты, дальше которых персонаж не двигается.


Когда-то тут будут ссылки на крутые проекты. Или нет.
TiodorДата: Суббота, 22 Февраля 2014, 17:11 | Сообщение # 3
участник
Сейчас нет на сайте
Цитата lentinant ()
ты до конца разбираешься с ригидбоди

если использовать ригидбоди и ит.д. то у объекта будет ограниченная скорость.

Цитата lentinant ()
Третий - привязка к координатам - стены как фикция, и просто делаешь граничные координаты, дальше которых персонаж не двигается.

так скорее всего и буду делать

Добавлено (22.02.2014, 17:11)
---------------------------------------------

Цитата lentinant ()
А почему не в разделе для юнити?

ступил =\


VK: Tiodor
lentinantДата: Суббота, 22 Февраля 2014, 22:14 | Сообщение # 4
ленивый программист
Сейчас нет на сайте
Цитата Tiodor ()
если использовать ригидбоди и ит.д. то у объекта будет ограниченная скорость.

Ты пробовал через непосредственно изменение velocity? Или только через AddForce.


Когда-то тут будут ссылки на крутые проекты. Или нет.
TiodorДата: Понедельник, 24 Февраля 2014, 00:35 | Сообщение # 5
участник
Сейчас нет на сайте
lentinant, я делал так:

Код
float moveHorizontal = Input.GetAxis ("Horizontal");
         float moveVertical = Input.GetAxis ("Vertical");

         Vector3 movement = new Vector3 (moveHorizontal, 0.0f, moveVertical);
         rigidbody.velocity = movement * speed;


Но скорость не делается после 100.

Добавлено (24.02.2014, 00:33)
---------------------------------------------
решил проблему ограничением:

Код
if (player.transform.position.x <= -210f)  
         {
             player.transform.position += player.transform.right * speed * Time.deltaTime;  
         }
         if (player.transform.position.x >= 210f)
         {
             player.transform.position += -player.transform.right * speed * Time.deltaTime;
         }

Добавлено (24.02.2014, 00:35)
---------------------------------------------
Ай( только теперь непонятно как быть с вертикальными границами... ведь игрок двигается вперед в пространстве.
И будут другие объекты которые будут действовать как стенка... =\
похоже не обойтись без ригидбоди


VK: Tiodor
castielblackДата: Понедельник, 24 Февраля 2014, 01:24 | Сообщение # 6
почетный гость
Сейчас нет на сайте
Ну так ты пытаешься свою физику сделать, используй стандартную, ибо очень много времени потратишь на это, очень. happy

Знания : C#, Lua, C++, Unity, Dreemchest, DirectX 11
Выпущенные проекты : BuildAndRun, Match 3 Cubes
TiodorДата: Понедельник, 24 Февраля 2014, 01:38 | Сообщение # 7
участник
Сейчас нет на сайте
Цитата castielblack ()
Ну так ты пытаешься свою физику сделать, используй стандартную, ибо очень много времени потратишь на это, очень.

Так ведь если использовать стандартную физику, то скорость больше 100 поставить нельзя, а для моего пиксель-арта это очень медленно.

Добавлено (24.02.2014, 01:38)
---------------------------------------------
Как я понимаю - единственный вариант - увеличить масштаб. Будет ужасно неудобно расставлять пиксельные объекты, но другого выхода я не вижу =(


VK: Tiodor
lentinantДата: Понедельник, 24 Февраля 2014, 04:59 | Сообщение # 8
ленивый программист
Сейчас нет на сайте
Цитата Tiodor ()
Как я понимаю - единственный вариант - увеличить масштаб. Будет ужасно неудобно расставлять пиксельные объекты, но другого выхода я не вижу =(

Возьми определенный размер за единицу, тогда будет весьма удобно. Вот в нашем Block Temple я брал за единицу длину 64 пикселя, и проблем с расстановкой не возникало. Два спрайта размером 64 на 64 идеально становились рядом, если координату просто изменить на единицу.


Когда-то тут будут ссылки на крутые проекты. Или нет.
TiodorДата: Понедельник, 24 Февраля 2014, 10:30 | Сообщение # 9
участник
Сейчас нет на сайте
Если б были тайлы одного размера sad

VK: Tiodor
  • Страница 1 из 1
  • 1
Поиск:

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