Пятница, 29 Марта 2024, 13:46

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

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Форум игроделов » Движки для разработки игр и сложные системы разработки » Unity » Люди помогите с С#
Люди помогите с С#
x_MedwedДата: Четверг, 11 Октября 2012, 09:14 | Сообщение # 1
постоянный участник
Сейчас нет на сайте
Вот делаю по примеру пример машину но вот когда запускаю игру колеса машины проваливаются на половину.
Как проваливается

Code

using UnityEngine;
using System.Collections;

public class CarController : MonoBehaviour {
      
     public WheelCollider[] WColForward;
     public WheelCollider[] WColBack;
      
     public Transform[] wheelsF; //1
     public Transform[] wheelsB; //1
      
     public float wheelOffset = 0.1f; //2
     public float wheelRadius = 0.13f; //2
      
     public float maxSteer = 30;
     public float maxAccel = 25;
     public float maxBrake = 50;
      
     public Transform COM;
      
     public class WheelData{ //3
         public Transform wheelTransform; //4
         public WheelCollider col; //5
         public Vector3 wheelStartPos; //6  
         public float rotation = 0.0f;  //7
     }
      
     protected WheelData[] wheels; //8
      
     // Use this for initialization
      
          
     void Start () {
         rigidbody.centerOfMass = COM.localPosition;
          
         wheels = new WheelData[WColForward.Length+WColBack.Length]; //8
          
         for (int i = 0; i<WColForward.Length; i++){ //9
             wheels[i] = SetupWheels(wheelsF[i],WColForward[i]); //9
         }
          
         for (int i = 0; i<WColBack.Length; i++){ //9
             wheels[i+WColForward.Length] = SetupWheels(wheelsB[i],WColBack[i]); //9
         }
          
     }
      
      
     private WheelData SetupWheels(Transform wheel, WheelCollider col){ //10
         WheelData result = new WheelData();  
          
         result.wheelTransform = wheel; //10
         result.col = col; //10
         result.wheelStartPos = wheel.transform.localPosition; //10
          
         return result; //10
          
     }
      
     void FixedUpdate () {
          
         float accel = 0;
         float steer = 0;
                  
         accel = Input.GetAxis("Vertical");
         steer = Input.GetAxis("Horizontal");   
          
         CarMove(accel,steer);
         UpdateWheels(); //11
     }
      
      
     private void UpdateWheels(){ //11
         float delta = Time.fixedDeltaTime; //12
          
          
         foreach (WheelData w in wheels){ //13
             WheelHit hit; //14
                    
             Vector3 lp = w.wheelTransform.localPosition; //15
             if(w.col.GetGroundHit(out hit)){ //16
                 lp.y -= Vector3.Dot(w.wheelTransform.position - hit.point, transform.up) - wheelRadius; //17
             }else{ //18
                  
                 lp.y = w.wheelStartPos.y - wheelOffset; //18
             }
             w.wheelTransform.localPosition = lp; //19
              
              
             w.rotation = Mathf.Repeat(w.rotation + delta * w.col.rpm * 360.0f / 60.0f, 360.0f); //20
             w.wheelTransform.localRotation = Quaternion.Euler(w.rotation, w.col.steerAngle, 90.0f); //21
         }  
          
     }
      
     private void CarMove(float accel,float steer){
          
         foreach(WheelCollider col in WColForward){
             col.steerAngle = steer*maxSteer;
         }
          
         if(accel == 0){
             foreach(WheelCollider col in WColBack){
                 col.brakeTorque = maxBrake;
             }  
              
         }else{
                    
             foreach(WheelCollider col in WColBack){
                 col.brakeTorque = 0;
                 col.motorTorque    = accel*maxAccel;
             }  
              
         }
          
                  
          
     }
      
}

Добавлено (11.10.2012, 09:14)
---------------------------------------------
Столько народу все так умничают а подсказать некто не может?

PovstalezДата: Четверг, 11 Октября 2012, 09:17 | Сообщение # 2
постоянный участник
Сейчас нет на сайте
WheelCollider правильно поставлен на колеса?
x_MedwedДата: Четверг, 11 Октября 2012, 10:30 | Сообщение # 3
постоянный участник
Сейчас нет на сайте
ну так как там показано чуть меньше колеса или надо чуть больше колеса??
lapendownДата: Четверг, 11 Октября 2012, 10:42 | Сообщение # 4
постоянный участник
Сейчас нет на сайте
Надо того-же размера,что и само колесо
x_MedwedДата: Четверг, 11 Октября 2012, 19:52 | Сообщение # 5
постоянный участник
Сейчас нет на сайте
щя попробую)

Добавлено (11.10.2012, 19:52)
---------------------------------------------
Капец что не пробовал как не изменял WheelCollider все равно проваливаются но вот если убрать вот эту rigidbody.centerOfMass = COM.localPosition; строчку то тогда норм но не работает поворот колес и как бы рессоры)

ЛевшаДата: Четверг, 11 Октября 2012, 20:39 | Сообщение # 6
почти ветеран
Сейчас нет на сайте
Возможно дело в пивоте модели, его надо опустить до точки касания колес земли.
Не уверен но может помочь...


X.cor.R (Prologue)
Форум игроделов » Движки для разработки игр и сложные системы разработки » Unity » Люди помогите с С#
  • Страница 1 из 1
  • 1
Поиск:

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