Суббота, 28 Декабря 2024, 17:59

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

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Вопросы новичка
tandem62Дата: Суббота, 06 Июня 2015, 00:11 | Сообщение # 1
уже был
Сейчас нет на сайте
Решил таки смастерить древний проект, задумывал давно все небыло времени заняться и вот начал. Суть сделать модель движения грузовика с прицепом, все кажется просто. но есть куча проблем которые немогу решить. Написал скрип чтобы колеса визуально крутились, на тягаче все относительно нормально а вот на прицепе после запуска они уезжают черти куда, плюс крутятся по разным осям, хотя в скрипте все сделано массивом. Ну и то что они прыгают это вопрос 2 (наверно крутятся относительно смещеного центра).
для начала хватит, и еще подскажите куда выложить проект чтобы можно было не жестами рассказывать и объяснять, а дать ссылку чтобы люди посмотрели что да как
вот примерно код на колеса прицепа:
Код

public class TruckWheelRotate : MonoBehaviour {

      public Transform[] WCol;
      public float RadiusWheels = 1;
      public float WheelOffset = 0.1f;
      public Vector3 shiftCentre = new Vector3(0.0f, -0.35f, 0.0f);//центр тяжести авто

      class WheelData
      {
          public Transform transform;
          public GameObject go;
          public WheelCollider col;
          public Vector3 StartPos;
          public float Rotation = 0.0f;
          public float MaxSteer;
          public float BreackPoer;
          public bool Motor;
      }

      private WheelData[] Wheels;

      private WheelData SetWheelsParameter(Transform wheel, float maxSteer, float radius, bool motor)
      {
          if (wheel == null)
          { //если колесо не найдено то генерируем исключение
              throw new System.Exception("Не найден входящий объект");
          }
          WheelData result = new WheelData(); // конструктор класса
          GameObject GO = new GameObject("WheelCollider"); // создаем колайдер   
          GO.transform.parent = transform; // прицепляем колайдер к родителю
          GO.transform.position = wheel.position; // позиция колайдера такая же как у колеса
          WheelCollider col = (WheelCollider)GO.AddComponent(typeof(WheelCollider));//добавляем колайдер в проект
          col.motorTorque = 0.0f; // начальная скорость кручения
          col.brakeTorque = 0.0f; // начальная сила торможения
          col.radius = radius;
          result.transform = wheel;
          result.go = GO;
          result.col = col;
          result.StartPos = GO.transform.localPosition;
          result.MaxSteer = maxSteer;
          result.Motor = motor;
          return result;
      }

   // Use this for initialization
   void Start () {
          Wheels = new WheelData[WCol.Length];
          //полный привод   
          for (int i = 0; i < WCol.Length; i++)
          {
              Wheels[i] = SetWheelsParameter(WCol[i], 0, RadiusWheels, true); //false для заднего привода   
          }
          rigidbody.centerOfMass += shiftCentre;
   }
     
   // Update is called once per frame
   void Update () {
          WheelsUpdate();
   }

      public void WheelsUpdate()
      {
          float delta = Time.fixedDeltaTime;

          foreach (WheelData w in Wheels)
          {
              WheelHit Hit;
              Vector3 lp = w.StartPos;
              if (w.col.GetGroundHit(out Hit))
              {
                  lp.y -= Vector3.Dot(w.transform.position - Hit.point, transform.up) - RadiusWheels;
              }
              else
              {
                  lp.y = w.StartPos.y - WheelOffset;
              }
              w.transform.localPosition = lp;

              w.Rotation = Mathf.Repeat(w.Rotation + delta * w.col.rpm * 360.0f / 60.0f, 360.0f);
              w.transform.localRotation = Quaternion.Euler(w.Rotation, w.col.steerAngle, 90.0f);

          }
      }

}


Сообщение отредактировал tandem62 - Суббота, 06 Июня 2015, 00:11
MANMANAДата: Суббота, 06 Июня 2015, 01:06 | Сообщение # 2
почти ветеран
Сейчас нет на сайте
Цитата tandem62 ()
куда выложить проект

когда захочешь ответить на это сообщение, то сразу слева над окном ввода сообщения есть надпись "Файлообменники" (сразу под буквами "b, i, u"), таки отлично подойдет для подобных нужд. smile


http://www.3dbuffer.com/ Текстуры, Unity3D, Blender: Эффекты, скрипты, моделирование, текстурирование, скульптинг
VKонтакте 3Dbuffer

Последнее:

Новый раздел "Текстуры"

Как запатентовать, защитить техническое решение, игру, идею


Сообщение отредактировал MANMANA - Суббота, 06 Июня 2015, 01:07
tandem62Дата: Суббота, 06 Июня 2015, 11:25 | Сообщение # 3
уже был
Сейчас нет на сайте
Проект вот примерно что на данный момент сделано, тут все видно, и еще кто скажет как заставить прицеп при Fixed Joint не дергаться при остановке
  • Страница 1 из 1
  • 1
Поиск:

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