| 
				
				Проблемка физики
				 | 
 | 
| d0x | Дата: Вторник, 30 Декабря 2014, 13:30 | Сообщение # 1 |  
| 
 частый гость 
Сейчас нет на сайте 
 
 | Подскажите пожалуйста, есть объект, пытаюсь сделать так чтобы он прыгал, но получается так что когда кнопка зажата он летит выше и выше.   Код if(inputDevice.Action2){      rigidbody.AddForce(Vector3.up * jump);      transform.position += Vector3.up * Time.deltaTime * jump;     } Добавлено (30 декабря 2014, 13:30) --------------------------------------------- когда не добавляю rigidbody.AddForce, то он при отпускании кнопки прыжка резко летит вниз, плавности нет. 
 |  
| 
 | 
 |    | 
| Xoid | Дата: Вторник, 30 Декабря 2014, 18:09 | Сообщение # 2 |  
 
почетный гость 
Сейчас нет на сайте 
 
 | проверяйте столкновение с поверхностью   надо разрешать прыгать только когда есть коллизия 
   http://docs.unity3d.com/ScriptReference/Collider.OnCollisionStay.html
   skype:xoid_main | С#/Unity 
 |  
| 
 | 
 |    | 
| Ranger | Дата: Вторник, 30 Декабря 2014, 18:57 | Сообщение # 3 |  
 
почти ветеран 
Сейчас нет на сайте 
 
 | d0x,   Вы уж определитесь или addforce, или transform.position +=.   не смешивайте физику и геометрию. 
   если   Цитата Xoid (  )   rigidbody.AddForce(Vector3.up * jump);      в апдейте, то сила каждый кадр прикладывается считайте сами
 
  
 
 Сообщение отредактировал Ranger - Вторник, 30 Декабря 2014, 19:25  |  
| 
 | 
 |    | 
| d0x | Дата: Вторник, 30 Декабря 2014, 19:24 | Сообщение # 4 |  
| 
 частый гость 
Сейчас нет на сайте 
 
 | Цитата Ranger (  )  d0x,   Вы уж определитесь или addforce, или transform.position +=.   не смешивайте физику и геометрию.      определился, делаю так: 
   Код rigidbody.AddForce(Vector3.up * jump * 0.35f, ForceMode.Impulse);     сделал проверку на нажатие кнопки, но все равно когда объект подпрыгнул и если снова нажимать на прыжок он прыгает выше и выше... т.е. отталкивается от воздуха)
 |  
| 
 | 
 |    | 
| MANMANA | Дата: Вторник, 30 Декабря 2014, 19:58 | Сообщение # 5 |  
| 
 почти ветеран 
Сейчас нет на сайте 
 
 | Задачу поставь корректно.   Что тебе нужно?   1. Чтобы объект (например, шар), лежащий на земле, при нажатии кнопки X подпрыгивал бы и опускался на землю.   1.1 Причем, если шар находится в воздухе, то он подпрыгивать не должен.   1.2 Причем при падении шара на землю он также должен сам по себе отскакивать от пола. 
   Ответ.   1.   Если (нажата кнопочка Хе и шар лежит на земле)   {   добавляем силу вертикально вверх;   } 
   Для пункта 1.2 добавить Коллайдеру шара материал "Резина"   И да, не забыть добавить шарику RigidBody и коллайдер, а земле коллайдер.
  http://www.3dbuffer.com/ Текстуры, Unity3D, Blender: Эффекты, скрипты, моделирование, текстурирование, скульптинг   VKонтакте 3Dbuffer 
   Последнее: 
   Новый раздел "Текстуры" 
   Как запатентовать, защитить техническое решение, игру, идею
 |  
| 
 | 
 |    | 
| d0x | Дата: Вторник, 30 Декабря 2014, 20:26 | Сообщение # 6 |  
| 
 частый гость 
Сейчас нет на сайте 
 
 | Цитата MANMANA (  )  Ответ.   1.   Если (нажата кнопочка Хе и шар лежит на земле)   {   добавляем силу вертикально вверх;   }    
   спасибо)
 |  
| 
 | 
 |    | 
| Vip_and_Rip | Дата: Среда, 31 Декабря 2014, 10:22 | Сообщение # 7 |  
| 
 почетный гость 
Сейчас нет на сайте 
 
 | Цитата d0x (  )  сделал проверку на нажатие кнопки, но все равно когда объект подпрыгнул и если снова нажимать на прыжок он прыгает выше и выше... т.е. отталкивается от воздуха)     Сделать проверку коллайдера под ногами персонажа, а на кнопку прыжка поставить условие, что бы срабатывала только при наличии соприкосновения с коллайдером.
  Больше никогда не буду делать игры.
 |  
| 
 | 
 |    | 
| d0x | Дата: Среда, 31 Декабря 2014, 11:35 | Сообщение # 8 |  
| 
 частый гость 
Сейчас нет на сайте 
 
 | Цитата Vip_and_Rip (  )  Сделать проверку коллайдера под ногами персонажа, а на кнопку прыжка поставить условие, что бы срабатывала только при наличии соприкосновения с коллайдером.     ага, так и сделал:) Всем спасибо и с наступающим)     Код     void Update () {    if(inputDevice.Action2.WasPressed && Jumping == false ){      Jumping = true;      rigidbody.AddForce(Vector3.up * jump * 0.35f, ForceMode.Impulse);    }   } 
   void OnCollisionEnter(Collision collis)     {      if (collis.gameObject.tag == "Platf")      {       Jumping = false;      }    }     
 |  
| 
 | 
 |    |