FPS и лестница

Физика в Unity

FPS и лестница

Сообщение WebWolf 30 дек 2009, 20:24

Чет вообще не пойму как сделать что бы FPS контроллер поднимался по лестнице)) подскажите пожалуйста... :-B
WTF? _WolfGames3D.com / Все в Tanks Heroes Вконтакте!
Аватара пользователя
WebWolf
Старожил
 
Сообщения: 532
Зарегистрирован: 19 дек 2009, 15:49
Откуда: Russian Federation
  • Сайт
  • ICQ

Re: FPS и лестница

Сообщение Neodrop 30 дек 2009, 20:49

Он и так прекрасно поднимается. Если у вас черезчур крутые ступени, поставьте поверх них невидимую колизионную плоскость как пандус.
Добавить neodrop в Skype
Изображение
"Спасибо!" нашему порталу, вы сможете сказать ЗДЕСЬ.
Если проблема не решается честно, нужно её обмануть! || Per stupiditas at Astra!
Страх порождает слабость. Бесстрашных поражают пули.
Протратившись на блядях байтах, на битах не экономят.
Аватара пользователя
Neodrop
Админ
 
Сообщения: 8480
Зарегистрирован: 08 окт 2008, 15:42
Откуда: Питер
Skype: neodrop
  • Сайт

Re: FPS и лестница

Сообщение WebWolf 30 дек 2009, 21:22

Neodrop писал(а):Он и так прекрасно поднимается. Если у вас черезчур крутые ступени, поставьте поверх них невидимую колизионную плоскость как пандус.

Чет я не понял)) у меня лестница прям вертикально.. т.е как бы выбраться надо из бункера)
Изображение
WTF? _WolfGames3D.com / Все в Tanks Heroes Вконтакте!
Аватара пользователя
WebWolf
Старожил
 
Сообщения: 532
Зарегистрирован: 19 дек 2009, 15:49
Откуда: Russian Federation
  • Сайт
  • ICQ

Re: FPS и лестница

Сообщение defint 30 дек 2009, 22:36

проверить есть ли лесница рядом если есть то изменить направление движения. всё это сделать в FPSWalker.

Код: Выделить всё

//было
moveDirection = new Vector3(Input.GetAxis("Horizontal"), 0, Input.GetAxis("Vertical"));
//станет
moveDirection = new Vector3(0, Input.GetAxis("Horizontal"), Input.GetAxis("Vertical"));



по-моему по нубски, только сверять расстояние в данном случае лучше не Distance, а колизией.
+ надо отключить гравитацию в скрипте.
defint
UNIт
 
Сообщения: 94
Зарегистрирован: 10 авг 2009, 12:17

Re: FPS и лестница

Сообщение Neodrop 31 дек 2009, 00:40

Тогда тут тысяча вариантов и ваш вопрос сродни этому : "как сделать пиз... офигенную игру?" Обычно на такие вопросы отвечают крайне неохотно. Пошевелите мозгами малость самостоятельно.
Добавить neodrop в Skype
Изображение
"Спасибо!" нашему порталу, вы сможете сказать ЗДЕСЬ.
Если проблема не решается честно, нужно её обмануть! || Per stupiditas at Astra!
Страх порождает слабость. Бесстрашных поражают пули.
Протратившись на блядях байтах, на битах не экономят.
Аватара пользователя
Neodrop
Админ
 
Сообщения: 8480
Зарегистрирован: 08 окт 2008, 15:42
Откуда: Питер
Skype: neodrop
  • Сайт

Re: FPS и лестница

Сообщение Blitz 03 янв 2010, 20:46

или скриптиком когда коллайдер игрока стукается об коллайдер лестници поднимать игрока с определённой скоростью или понаставить невидимых плоскостей и прыгать на лестнице, тем самым поднимаясь (см. нормали).
Neodrop писал(а):Пошевелите мозгами малость самостоятельно.

это да! но для этого нужнo как опыт/знания, так и умение абстрактно мыслить, а этого к сожелению нет у многих.
WebWolf: если у вас ММО или убийца какой-то игры 21ого века то отложите его на месяца 3-4. а если расширяете FPS тутор то кроссавчег! в нужном месте взялись =)
Neodop: не обижайте так молодняк. им абстракции в мышлении не хватает, да и не знают (понятия не имеют) как устроены действия изнутри. если кто-то не учил программирование или мультимедийные приложения в школе/универе/ПТУ... это не их вина.
Blitz
UNец
 
Сообщения: 31
Зарегистрирован: 12 дек 2009, 16:49

Re: FPS и лестница

Сообщение WebWolf 03 янв 2010, 20:56

Blitz писал(а):или скриптиком когда коллайдер игрока стукается об коллайдер лестници поднимать игрока с определённой скоростью или понаставить невидимых плоскостей и прыгать на лестнице, тем самым поднимаясь (см. нормали).
Neodrop писал(а):Пошевелите мозгами малость самостоятельно.

это да! но для этого нужнo как опыт/знания, так и умение абстрактно мыслить, а этого к сожелению нет у многих.
WebWolf: если у вас ММО или убийца какой-то игры 21ого века то отложите его на месяца 3-4. а если расширяете FPS тутор то кроссавчег! в нужном месте взялись =)
Neodop: не обижайте так молодняк. им абстракции в мышлении не хватает, да и не знают (понятия не имеют) как устроены действия изнутри. если кто-то не учил программирование или мультимедийные приложения в школе/универе/ПТУ... это не их вина.

На смотри.. что собираю) обновил проект viewtopic.php?f=17&t=1312
WTF? _WolfGames3D.com / Все в Tanks Heroes Вконтакте!
Аватара пользователя
WebWolf
Старожил
 
Сообщения: 532
Зарегистрирован: 19 дек 2009, 15:49
Откуда: Russian Federation
  • Сайт
  • ICQ

Re: FPS и лестница

Сообщение Blitz 03 янв 2010, 22:12

узнал проект, автора не узнал :D
тоже хорошее начальное направление :ymparty:
-что ты тут делаеш?
-да так, бегаю да кровь полакиваю
(с) Дневник вампира. José Andrade.
Blitz
UNец
 
Сообщения: 31
Зарегистрирован: 12 дек 2009, 16:49

Re: FPS и лестница

Сообщение Левш@ 03 янв 2010, 22:42

Я представляю такой алгоритм;
Подошел к лестнице коснулся коллайдером, отключается управление input, а кнопка "вперед" работает как "вверх", "назад" как "вниз".
как только в вертикальном направлении коллайдер отцепится от лестницы - возвращаем input.
Ну и наверное нужно сделать задержку.
Это так, примитивно.
_X.cor.R (Prologue)
Аватара пользователя
Левш@
Адепт
 
Сообщения: 4073
Зарегистрирован: 14 окт 2009, 16:34
Откуда: IBERIA
Skype: bars_levsha
  • Сайт

Re: FPS и лестница

Сообщение Левш@ 07 янв 2010, 02:20

Вот написал скрипты для вертикальной лестницы.

Lestnica.js - цепляем на обьект лестницу с коллайдером (не забывать галочку на is trigger):

Код: Выделить всё
function OnTriggerEnter (other : Collider) {
    FPSWalker.lestnica = 1;
}

function OnTriggerExit (other : Collider) {
    FPSWalker.lestnica = 2;
}


А тут дополнительный код в FPSWalker.js:

Код: Выделить всё
var jumpSpeed = 8.0;
var gravity = 20.0;
static var lestnica = 0;
private var moveDirection = Vector3.zero;
private var grounded : boolean = false;


function FixedUpdate() {
   if ((grounded) && (lestnica == 0)) {
      // We are grounded, so recalculate movedirection directly from axes
      moveDirection = new Vector3(Input.GetAxis("Horizontal"), 0, Input.GetAxis("Vertical"));
      moveDirection = transform.TransformDirection(moveDirection);
      moveDirection *= speed;
      
      if (Input.GetButton ("Jump")) {
         moveDirection.y = jumpSpeed;
      }
   }

   // Apply gravity
   moveDirection.y -= gravity * Time.deltaTime;
           
          if (lestnica == 1) {
   moveDirection *= 0;      
   moveDirection.y += (Input.GetAxis("Vertical") * 2);
   }   
         if (lestnica == 2) {
   moveDirection = new Vector3(Input.GetAxis("Horizontal"), 0, Input.GetAxis("Vertical"));
   moveDirection = transform.TransformDirection(moveDirection);
   moveDirection *= speed;
   lestnica = 0;
   }
   
   // Move the controller
   var controller : CharacterController = GetComponent(CharacterController);
   var flags = controller.Move(moveDirection * Time.deltaTime);
   grounded = (flags & CollisionFlags.CollidedBelow) != 0;
}

@script RequireComponent(CharacterController)


И все же в проектах к каждой лестнице нужен свой подход.
Эти скрипты просто как примеры, дальше сами. :)
_X.cor.R (Prologue)
Аватара пользователя
Левш@
Адепт
 
Сообщения: 4073
Зарегистрирован: 14 окт 2009, 16:34
Откуда: IBERIA
Skype: bars_levsha
  • Сайт

Re: FPS и лестница

Сообщение WebWolf 07 янв 2010, 23:18

Прикол в том)) что спустится нелзя)) а если и можно то только клавишей назад)) хотя в данный момент это клавиша подняться)) и отцепится в низу очень сложно))
WTF? _WolfGames3D.com / Все в Tanks Heroes Вконтакте!
Аватара пользователя
WebWolf
Старожил
 
Сообщения: 532
Зарегистрирован: 19 дек 2009, 15:49
Откуда: Russian Federation
  • Сайт
  • ICQ

Re: FPS и лестница

Сообщение Левш@ 07 янв 2010, 23:33

И все же в проектах к каждой лестнице нужен свой подход.
Эти скрипты просто как примеры, дальше сами.

Все там можно, коллайдер надо настроить.
У себя сделал и поднимается и спускается.
_X.cor.R (Prologue)
Аватара пользователя
Левш@
Адепт
 
Сообщения: 4073
Зарегистрирован: 14 окт 2009, 16:34
Откуда: IBERIA
Skype: bars_levsha
  • Сайт

Re: FPS и лестница

Сообщение WebWolf 08 янв 2010, 00:03

Левш@ писал(а):
И все же в проектах к каждой лестнице нужен свой подход.
Эти скрипты просто как примеры, дальше сами.

Все там можно, коллайдер надо настроить.
У себя сделал и поднимается и спускается.

ДА не)) просто спускается то задом))если ты подходишь к лестнице и нажимаешь W т.к вперед она понимает что это подняться, а не спустится... а когда низу то все правильно)) все отлично..
WTF? _WolfGames3D.com / Все в Tanks Heroes Вконтакте!
Аватара пользователя
WebWolf
Старожил
 
Сообщения: 532
Зарегистрирован: 19 дек 2009, 15:49
Откуда: Russian Federation
  • Сайт
  • ICQ

Re: FPS и лестница

Сообщение v1pire 09 фев 2013, 23:42

Жаль что скрипт устарел.
Кто нибудь пробовал перевести его на новую версию(4ю С#)?
Я пытался но не получилось. Потом решил сделать свой скрипт, но он тоже не корректно работает. Продумал алгоритм:

Синтаксис:
  1. Ищем столкновение игрока(коллидер) с лестницей(триггерЭнтер). //void TriggerEnter(col KOLLIDER) 
  2. Коллидер.отключить гравитацию //KOLLIDER.GetComponent<CharController>().gravity = 0; 
  3. Коллидер.убрать все векторы по направлениям(движение, ускорения) //??? 
  4. При нажатой "w" Коллидер.поднять.у на 0.01*ДельтаТайм //if(GetKey(Keycode.W)) ??? 
  5. При нажатой "S" Коллидер.опустить.у на 0.01*ДельтаТайм  
  6.  
  7. Ищем выход игрока(коллидер) с лестницей(триггерЭксит) 
  8. Коллидер.включить граватацию 


Теперь вопрос: какие нужно функции(вместо того что на русском) для этого использовать? Какие проверки надо использовать(напр. Игрок на земле)? И как по уму выполнить эту задачу?
PS: Для начала я не использую лестницы под разным углом. Только 90*(вертикально)
v1pire
UNец
 
Сообщения: 16
Зарегистрирован: 19 апр 2012, 18:48


Вернуться в PhysX

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2