コード例 #1
0
ファイル: TyrePlacement.cs プロジェクト: rcrimp/GameJam
    void UpdateWheelHeight(Transform wheelTransform, WheelCollider collider)
    {
        Vector3  localPosition = wheelTransform.localPosition;
        WheelHit hit           = new WheelHit();

        // see if we have contact with ground
        if (collider.GetGroundHit(out hit))
        {
            float hitY = collider.transform.InverseTransformPoint(hit.point).y;
            localPosition.y = hitY + collider.radius;

            if (wheelCollider.GetComponent <ParticleSystem>() != null)
            {
                ParticleSystem.EmissionModule em = wheelCollider.GetComponent <ParticleSystem>().emission;
                em.enabled =
                    //Mathf.Abs(hit.forwardSlip) >= wheelCollider.forwardFriction.extremumSlip ||
                    Mathf.Abs(hit.sidewaysSlip) >= wheelCollider.sidewaysFriction.extremumSlip;
            }
        }
        else
        {
            // no contact with ground, just extend wheel position with suspension distance
            localPosition = Vector3.Lerp(localPosition, -Vector3.up * collider.suspensionDistance, .05f);
            if (wheelCollider.GetComponent <ParticleSystem>() != null)
            {
                ParticleSystem.EmissionModule em = wheelCollider.GetComponent <ParticleSystem>().emission;
                em.enabled = false;
            }
        }
        wheelTransform.localPosition = localPosition;
        wheelAngle += (((collider.rpm * 360f) / 60f) * Time.fixedDeltaTime) % 360f;
        wheelTransform.localRotation = Quaternion.Euler(wheelAngle, collider.steerAngle, 0);
    }
コード例 #2
0
 public void TireWearMonitor()
 {
     //ghetto code here for now
     tirewearlist[0] = wheelFL.GetComponent <TireBehavior>().TreadHealth;
     tirewearlist[1] = wheelFR.GetComponent <TireBehavior>().TreadHealth;
     tirewearlist[2] = wheelRL.GetComponent <TireBehavior>().TreadHealth;
     tirewearlist[3] = wheelRR.GetComponent <TireBehavior>().TreadHealth;
 }
コード例 #3
0
    void Start()
    {
        rb              = GetComponent <Rigidbody>();
        tr1             = botLeft.GetComponent <TrailRenderer>();
        tr2             = botRight.GetComponent <TrailRenderer>();
        rb.centerOfMass = new Vector3(0, -0.9f, 0);

        // find other script gameobject to access methods
        //GameObject tempImg = GameObject.Find("SpeedBar");
        //speedBar = tempImg.GetComponent<SpeedBar>();
    }
コード例 #4
0
    void Start()
    {
        FL.GetComponent <WheelCollider>();
        FR.GetComponent <WheelCollider>();
        RL.GetComponent <WheelCollider>();
        RR.GetComponent <WheelCollider>();

        COM = GameObject.Find("CenterOfGravity");
        GetComponent <Rigidbody>().centerOfMass = new Vector3(COM.transform.localPosition.x * transform.localScale.x, COM.transform.localPosition.y * transform.localScale.y, COM.transform.localPosition.z * transform.localScale.z);
        Transform BlackCarRearLights = GameObject.Find("Lights_red").transform.GetChild(0);

        BL_light           = BlackCarRearLights.GetChild(0).GetComponent <Light>();
        BR_light           = BlackCarRearLights.GetChild(1).GetComponent <Light>();
        BL_light.intensity = 0.5f;
        BR_light.intensity = 0.5f;

        for (int i = 1; i <= 11; ++i)
        {
            CarSound.Add(GameObject.Find(string.Format("CarSound_2_({0})", i)).GetComponent <AudioSource>());
            CarSound[i - 1].Play();
        }
    }
コード例 #5
0
    void FixedUpdate()
    {
        if (!coll.GetComponent <WheelCollider>().GetGroundHit(out wheelHit))
        {
            tr.emitting = false;
            return;
        }
        if (wheelHit.collider.tag == "Terrain")
        {
            tr.emitting = false;
            return;
        }


        if (wheelHit.sidewaysSlip > 0.6 | wheelHit.forwardSlip > 0.9)
        {
            tr.emitting = true;
        }
        else if (wheelHit.sidewaysSlip <= 0.6 && wheelHit.forwardSlip <= 0.9)
        {
            tr.emitting = false;
        }
    }
コード例 #6
0
    public void destroyWheel(Wheels whichWheel)
    {
        int           idx = (int)whichWheel;
        WheelCollider wc  = wheels[idx].wc;

        if (wheels[idx].breaked >= 0.9f)
        {
            wheelRadius            = wc.radius;
            wheels[idx].breaked    = 0.24f;
            wc.radius              = RimRadius;
            wc.mass               *= 0.5f;
            wc.suspensionDistance *= 0.5f;

            WheelFrictionCurve wfc = wc.forwardFriction;
            wfc.extremumSlip   *= 0.5f;
            wfc.extremumValue  *= 0.25f;
            wfc.asymptoteSlip  *= 0.5f;
            wfc.asymptoteValue *= 0.25f;
            wc.forwardFriction  = wfc;

            wfc = wc.sidewaysFriction;
            wfc.extremumValue  *= 0.5f;
            wfc.asymptoteValue *= 0.5f;
            wc.sidewaysFriction = wfc;

            if (wheels[idx].tire != null)
            {
                //Destroy(wheels[idx].tire);
                wheels[idx].tire.SetActive(false);
                //wheels[idx].tire = null;
            }
        }

        GetComponent <Rigidbody>().AddExplosionForce(120000.0f, wc.GetComponent <Transform>().position, 20.0f);
        //GetComponent<Rigidbody>().AddExplosionForce(5000.0f, Vector3.zero, 540.0f);
    }
コード例 #7
0
        void SetupWheels()
        {
            wheeltransformList.Clear();
            wheelcolliderList.Clear();
            wheelsComponent.Clear();

            wheeltransformList.Add(FL_Wheel); wheelcolliderList.Add(FL_WheelCollider); wheelsComponent.Add(FL_WheelCollider.GetComponent <Wheels>());
            wheeltransformList.Add(FR_Wheel); wheelcolliderList.Add(FR_WheelCollider); wheelsComponent.Add(FR_WheelCollider.GetComponent <Wheels>());
            wheeltransformList.Add(RL_Wheel); wheelcolliderList.Add(RL_WheelCollider); wheelsComponent.Add(RL_WheelCollider.GetComponent <Wheels>());
            wheeltransformList.Add(RR_Wheel); wheelcolliderList.Add(RR_WheelCollider); wheelsComponent.Add(RR_WheelCollider.GetComponent <Wheels>());

            for (int i = 0; i < wheelsComponent.Count; i++)
            {
                wheelsComponent[i].SetupWheelCollider(50, 25000, 2000);
            }

            //Set no traction for the drift race type
            if (RaceManager.instance && RaceManager.instance._raceType == RaceManager.RaceType.Drift)
            {
                traction = 0;

                steerHelper = 0;

                if (_propulsion == Propulsion.FWD)
                {
                    _propulsion = Propulsion.RWD;
                    Debug.Log("Setting propulsion to RWD for the drift race");
                }
            }
        }
コード例 #8
0
ファイル: TireToWheel.cs プロジェクト: simia/Placuszki
 void Start()
 {
     wheelCollider.GetComponent <ParticleSystem>().emissionRate = 500;
 }
コード例 #9
0
        void SetupWheels()
        {
            wheelcolliderList.Clear();
            wheeltransformList.Clear();

            //Add wheel transfoms/colliders to the lists
            wheeltransformList.Add(frontWheelTransform); wheelcolliderList.Add(frontWheelCollider); wheelsComponent.Add(frontWheelCollider.GetComponent <Wheels>());
            wheeltransformList.Add(rearWheelTransform); wheelcolliderList.Add(rearWheelCollider); wheelsComponent.Add(rearWheelCollider.GetComponent <Wheels>());

            for (int i = 0; i < wheelsComponent.Count; i++)
            {
                wheelsComponent[i].SetupWheelCollider(150, 60000, 4500);
            }
        }
コード例 #10
0
    private void FixedUpdate()
    {
        //플레이가 가능하면
        if (m_gameManager.m_isPlay)
        {
            GetInput();

            Steer();

            if (m_isbreak)
            {
                Breaking();
            }
            else
            {
                Accelerate();
            }

            UpdatesWheelMesh();

            //  km/h = 원의둘레 * rpm -> m/m => km/h로변환하려면 60/1000을 해준다. 1m = 1/1000 km 이다.
            //m_currentSpeed = Mathf.Round((2 * frontDriverW.radius * Mathf.PI) * frontDriverW.rpm * (60.0f / 1000.0f));



            //1초당 1M -> 1시간당 1KM
            m_currentSpeed = Mathf.Round(GetComponent <Rigidbody>().velocity.magnitude * 3.6f);

            m_speedometer.GetComponent <Image>().fillAmount = m_currentSpeed / m_maxSpeed;

            m_kmPh.text = m_currentSpeed.ToString();

            WheelHit hit;

            rearDriverW.GetComponent <WheelCollider>().GetGroundHit(out hit);

            float currentFrictionValue = hit.sidewaysSlip;

            currentFrictionValue = Mathf.Abs(currentFrictionValue);
            //Debug.Log(currentFrictionValue);

            if (currentFrictionValue >= 0.1f)
            {
                setSkidMark();

                m_img_gage.GetComponent <Image>().fillAmount = m_gage / 100.0f;
                m_gage += 0.5f;

                if (m_isboost == false && m_gage >= 100.0f)
                {
                    m_gage = 100.0f;

                    m_img_gage.GetComponent <Image>().color = new Color(1, 0, 0, 1);

                    m_isboost = true;
                }
            }

            if (m_isboost)
            {
                if (Input.GetKeyDown(KeyCode.E) && frontPassengerW.brakeTorque == 0.0f)
                {
                    m_gage = 0.0f;
                    m_img_gage.GetComponent <Image>().fillAmount = m_gage / 100.0f;
                    m_img_gage.GetComponent <Image>().color      = new Color(0, 0, 1, 1);
                    m_isboost = false;
                    StartCoroutine(StartBoost());
                }
            }
        }
    }