Ejemplo n.º 1
0
    internal IEnumerator ChangingGear(int gear)
    {
        changingGear = true;

        if (RCCSettings.useTelemetry)
        {
            print("Shifted to: " + (gear).ToString());
        }

        if (gearShiftingClips.Length > 0)
        {
            gearShiftingSound = RCC_CreateAudioSource.NewAudioSource(gameObject, "Gear Shifting AudioSource", 5, 5, RCCSettings.maxGearShiftingSoundVolume, gearShiftingClips[UnityEngine.Random.Range(0, gearShiftingClips.Length)], false, true, true);
            if (!gearShiftingSound.isPlaying)
            {
                gearShiftingSound.Play();
            }
        }

        yield return(new WaitForSeconds(gearShiftingDelay));

        if (gear == -1)
        {
            currentGear = 0;
            direction   = -1;
        }
        else
        {
            currentGear = gear;
            direction   = 1;
        }

        changingGear = false;
    }
Ejemplo n.º 2
0
    void Start()
    {
        if (RCCSettings.dontUseAnyParticleEffects)
        {
            Destroy(gameObject);
            return;
        }

        carController = GetComponentInParent <RCC_CarControllerV3>();
        particle      = GetComponent <ParticleSystem>();
        emission      = particle.emission;

        if (flame)
        {
            subEmission           = flame.emission;
            flameLight            = flame.GetComponentInChildren <Light>();
            flameSource           = RCC_CreateAudioSource.NewAudioSource(gameObject, "Exhaust Flame AudioSource", 10f, 25f, 1f, RCCSettings.exhaustFlameClips[0], false, false, false);
            flameLight.renderMode = RCCSettings.useLightsAsVertexLights ? LightRenderMode.ForceVertex : LightRenderMode.ForcePixel;
        }

        lensFlare = GetComponentInChildren <LensFlare> ();

        if (flameLight)
        {
            if (flameLight.flare != null)
            {
                flameLight.flare = null;
            }
        }
    }
Ejemplo n.º 3
0
 void Start()
 {
     handler = GetComponentInParent <HR_PlayerHandler>();
     bombTimerAudioSource = RCC_CreateAudioSource.NewAudioSource(gameObject, "Bomb Timer AudioSource", 0f, 0f, .25f, bombTimerAudioClip, false, false, false);
     bombLight            = GetComponentInChildren <Light>();
     bombLight.enabled    = true;
     bombLight.intensity  = 0f;
 }
Ejemplo n.º 4
0
 public void OnPointerClick(PointerEventData data)
 {
     if (Camera.main != null)
     {
         clickSound = RCC_CreateAudioSource.NewAudioSource(Camera.main.gameObject, HR_HighwayRacerProperties.Instance.buttonClickAudioClip.name, 0f, 0f, 1f, HR_HighwayRacerProperties.Instance.buttonClickAudioClip, false, true, true);
         clickSound.ignoreListenerPause  = true;
         clickSound.ignoreListenerVolume = true;
     }
 }
Ejemplo n.º 5
0
    void Start()
    {
        carController = GetComponentInParent <RCC_CarControllerV3>();
        particle      = GetComponent <ParticleSystem>();
        emission      = particle.emission;

        if (flame)
        {
            subEmission = flame.emission;
            flameLight  = flame.GetComponentInChildren <Light>();
            flameSource = RCC_CreateAudioSource.NewAudioSource(gameObject, "Exhaust Flame AudioSource", 10f, 50f, 10f, RCC_Settings.Instance.exhaustFlameClips[0], false, false, false);
        }
    }
Ejemplo n.º 6
0
    void OnCollisionEnter(Collision collision)
    {
        if (!collision.transform.root.GetComponent <Man>())
        {
            if (collision.contacts.Length < 1 || collision.relativeVelocity.magnitude < minimumCollisionForce)
            {
                return;
            }

            if (crashClips.Length > 0)
            {
                if (collision.contacts[0].thisCollider.gameObject.transform != transform.parent)
                {
                    crashSound = RCC_CreateAudioSource.NewAudioSource(gameObject, "Crash Sound AudioSource", 5, 20, RCCSettings.maxCrashSoundVolume, crashClips[UnityEngine.Random.Range(0, crashClips.Length)], false, true, true);
                    if (!crashSound.isPlaying)
                    {
                        crashSound.Play();
                    }
                }
            }

            if (useDamage)
            {
                CollisionParticles(collision.contacts[0].point);

                Vector3 colRelVel = collision.relativeVelocity;
                colRelVel *= 1f - Mathf.Abs(Vector3.Dot(transform.up, collision.contacts[0].normal));

                float cos = Mathf.Abs(Vector3.Dot(collision.contacts[0].normal, colRelVel.normalized));

                if (colRelVel.magnitude * cos >= minimumCollisionForce)
                {
                    sleep = false;

                    localVector = transform.InverseTransformDirection(colRelVel) * (damageMultiplier / 50f);

                    if (originalMeshData == null)
                    {
                        LoadOriginalMeshData();
                    }

                    for (int i = 0; i < deformableMeshFilters.Length; i++)
                    {
                        DeformMesh(deformableMeshFilters[i].mesh, originalMeshData[i].meshVerts, collision, cos, deformableMeshFilters[i].transform, rot);
                    }
                }
            }
        }
    }
Ejemplo n.º 7
0
    public void Animate()
    {
        if (GameObject.Find(HR_HighwayRacerProperties.Instance.labelSlideAudioClip.name))
        {
            slidingAudioSource = GameObject.Find(HR_HighwayRacerProperties.Instance.labelSlideAudioClip.name).GetComponent <AudioSource>();
        }
        else
        {
            slidingAudioSource = RCC_CreateAudioSource.NewAudioSource(Camera.main.gameObject, HR_HighwayRacerProperties.Instance.labelSlideAudioClip.name, 0f, 0f, 1f, HR_HighwayRacerProperties.Instance.labelSlideAudioClip, false, false, true);
        }

        slidingAudioSource.ignoreListenerPause  = true;
        slidingAudioSource.ignoreListenerVolume = true;

        actNow = true;
    }
Ejemplo n.º 8
0
    public void Count()
    {
        if (GameObject.Find(HR_HighwayRacerProperties.Instance.countingPointsAudioClip.name))
        {
            countingAudioSource = GameObject.Find(HR_HighwayRacerProperties.Instance.countingPointsAudioClip.name).GetComponent <AudioSource>();
        }
        else
        {
            countingAudioSource = RCC_CreateAudioSource.NewAudioSource(Camera.main.gameObject, HR_HighwayRacerProperties.Instance.countingPointsAudioClip.name, 0f, 0f, 1f, HR_HighwayRacerProperties.Instance.countingPointsAudioClip, true, true, true);
        }

        countingAudioSource.ignoreListenerPause  = true;
        countingAudioSource.ignoreListenerVolume = true;

        actNow = true;
    }
Ejemplo n.º 9
0
    void Start()
    {
        carController    = GetComponentInParent <RCC_CarControllerV3>();
        _light           = GetComponent <Light>();
        trailRenderer    = GetComponent <TrailRenderer> ();
        _light.enabled   = true;
        _light.intensity = 0f;

        if (RCCSettings.useLightProjectorForLightingEffect)
        {
            projector = GetComponent <Projector>();
            if (projector == null)
            {
                projector = ((GameObject)Instantiate(RCCSettings.projector, transform.position, transform.rotation)).GetComponent <Projector>();
                projector.transform.SetParent(transform, true);
            }
            projector.ignoreLayers = RCCSettings.projectorIgnoreLayer;
            if (lightType != LightType.HeadLight)
            {
                projector.transform.localRotation = Quaternion.Euler(20f, transform.localPosition.z > 0f ? 0f : 180f, 0f);
            }
            Material newMaterial = new Material(projector.material);
            projector.material = newMaterial;
        }

        if (RCCSettings.useLightsAsVertexLights)
        {
            _light.renderMode  = LightRenderMode.ForceVertex;
            _light.cullingMask = 0;
        }
        else
        {
            _light.renderMode = LightRenderMode.ForcePixel;
        }

        if (lightType == LightType.Indicator)
        {
            if (!carController.transform.Find("All Audio Sources/Indicator Sound AudioSource"))
            {
                indicatorSound = RCC_CreateAudioSource.NewAudioSource(carController.gameObject, "Indicator Sound AudioSource", 1f, 3f, 1, indicatorClip, false, false, false);
            }
            else
            {
                indicatorSound = carController.transform.Find("All Audio Sources/Indicator Sound AudioSource").GetComponent <AudioSource>();
            }
        }
    }
Ejemplo n.º 10
0
    public IEnumerator StartEngine()
    {
        engineRunning    = false;
        engineStarting   = true;
        engineStartSound = RCC_CreateAudioSource.NewAudioSource(gameObject, "Engine Start AudioSource", 5, 10, 1, engineStartClip, false, true, true);
        if (engineStartSound.isPlaying)
        {
            engineStartSound.Play();
        }
        yield return(new WaitForSeconds(1f));

        engineRunning = true;
        fuelInput     = 1f;
        yield return(new WaitForSeconds(1f));

        engineStarting = false;
    }
Ejemplo n.º 11
0
    public void DisplayScore(int score, float offset)
    {
        if (index < scoreTexts.Length - 1)
        {
            index++;
        }
        else
        {
            index = 0;
        }

        scoreTexts[index].text = "+" + score.ToString();
        scoreTexts[index].transform.position = new Vector3(defPos.x + offset, defPos.y, defPos.z);

        timer         = lifeTime;
        nearMissSound = RCC_CreateAudioSource.NewAudioSource(gameObject, HR_HighwayRacerProperties.Instance.nearMissAudioClip.name, 0f, 0f, 1f, HR_HighwayRacerProperties.Instance.nearMissAudioClip, false, true, true);
        nearMissSound.ignoreListenerPause  = true;
        nearMissSound.ignoreListenerVolume = true;
    }
Ejemplo n.º 12
0
    void SoundsInitialize()
    {
        engineSoundOn   = RCC_CreateAudioSource.NewAudioSource(gameObject, "Engine Sound On AudioSource", 5, 100, 0, engineClipOn, true, true, false);
        engineSoundOff  = RCC_CreateAudioSource.NewAudioSource(gameObject, "Engine Sound Off AudioSource", 5, 100, 0, engineClipOff, true, true, false);
        engineSoundIdle = RCC_CreateAudioSource.NewAudioSource(gameObject, "Engine Sound Idle AudioSource", 5, 100, 0, engineClipIdle, true, true, false);

        reversingSound = RCC_CreateAudioSource.NewAudioSource(gameObject, "Reverse Sound AudioSource", 5, 10, 0, reversingClip, true, false, false);
        windSound      = RCC_CreateAudioSource.NewAudioSource(gameObject, "Wind Sound AudioSource", 5, 10, 0, windClip, true, true, false);
        brakeSound     = RCC_CreateAudioSource.NewAudioSource(gameObject, "Brake Sound AudioSource", 5, 10, 0, brakeClip, true, true, false);
        if (useTurbo)
        {
            blowSound = RCC_CreateAudioSource.NewAudioSource(gameObject, "NOS Blow", 3f, 10f, 1f, null, false, false, false);
        }
        if (useTurbo)
        {
            turboSound = RCC_CreateAudioSource.NewAudioSource(gameObject, "Turbo Sound AudioSource", .1f, .5f, 0f, turboClip, true, true, false);
            RCC_CreateAudioSource.NewHighPassFilter(turboSound, 10000f, 10);
        }
    }
Ejemplo n.º 13
0
    void Awake()
    {
        Time.timeScale       = 1f;
        AudioListener.volume = 0f;
        AudioListener.pause  = false;

        if (HR_HighwayRacerProperties.Instance.gameplayClips != null && HR_HighwayRacerProperties.Instance.gameplayClips.Length > 0)
        {
            gameplaySoundtrack = RCC_CreateAudioSource.NewAudioSource(gameObject, "GamePlay Soundtrack", 0f, 0f, .35f, HR_HighwayRacerProperties.Instance.gameplayClips [UnityEngine.Random.Range(0, HR_HighwayRacerProperties.Instance.gameplayClips.Length)], true, true, false);
            gameplaySoundtrack.ignoreListenerPause  = true;
            gameplaySoundtrack.ignoreListenerVolume = true;
        }

        selectedCarIndex  = PlayerPrefs.GetInt("SelectedPlayerCarIndex");
        selectedModeIndex = PlayerPrefs.GetInt("SelectedModeIndex");
        totalPlayedCount  = PlayerPrefs.GetInt("TotalPlayedCount");

        switch (selectedModeIndex)
        {
        case 0:
            mode = Mode.OneWay;
            break;

        case 1:
            mode = Mode.TwoWay;
            break;

        case 2:
            mode = Mode.TimeAttack;
            break;

        case 3:
            mode = Mode.Bomb;
            break;
        }
    }
Ejemplo n.º 14
0
    void Awake()
    {
        Time.timeScale              = 1f;
        AudioListener.volume        = 1f;
        AudioListener.pause         = false;
        Application.targetFrameRate = 60;

        if (HR_HighwayRacerProperties.Instance.mainMenuClips != null && HR_HighwayRacerProperties.Instance.mainMenuClips.Length > 0)
        {
            mainMenuSoundtrack = RCC_CreateAudioSource.NewAudioSource(gameObject, "Main Menu Soundtrack", 0f, 0f, 1f, HR_HighwayRacerProperties.Instance.mainMenuClips [UnityEngine.Random.Range(0, HR_HighwayRacerProperties.Instance.mainMenuClips.Length)], true, true, false);
            mainMenuSoundtrack.ignoreListenerPause  = true;
            mainMenuSoundtrack.ignoreListenerVolume = true;
        }

        if (HR_HighwayRacerProperties.Instance._1MMoneyForTesting)
        {
            PlayerPrefs.SetInt("Currency", 1000000);
        }

        carIndex = PlayerPrefs.GetInt("SelectedPlayerCarIndex", 0);

        CreateCars();
        SpawnCar();
    }
    void Start()
    {
        carController = GetComponentInParent <RCC_CarControllerV3>();
        rigid         = carController.GetComponent <Rigidbody> ();

        // Getting all WheelColliders attached to this vehicle (Except this).
        allWheelColliders = carController.GetComponentsInChildren <RCC_WheelCollider>().ToList();
//		allWheelColliders.Remove(this);
        GetTerrainData();

        // Are we going to use skidmarks? If we do, get or create SkidmarksManager on scene.
        if (!RCCSettings.dontUseSkidmarks)
        {
            if (GameObject.FindObjectOfType(typeof(RCC_Skidmarks)))
            {
                skidmarks = GameObject.FindObjectOfType(typeof(RCC_Skidmarks)) as RCC_Skidmarks;
            }
            else
            {
                skidmarks = (RCC_Skidmarks)Instantiate(RCCSettings.skidmarksManager, Vector3.zero, Quaternion.identity);
            }
        }

        // Increasing WheelCollider mass for avoiding unstable behavior. Only in Unity 5.
        if (RCCSettings.useFixedWheelColliders)
        {
            wheelCollider.mass = rigid.mass / 20f;
//			wheelCollider.ConfigureVehicleSubsteps(1000f, 10, 10);
        }

        // Getting friction curves.
        forwardFrictionCurve  = wheelCollider.forwardFriction;
        sidewaysFrictionCurve = wheelCollider.sidewaysFriction;

        // Proper settings for selected behavior type.
        switch (RCCSettings.behaviorType)
        {
        case RCC_Settings.BehaviorType.SemiArcade:
            forwardFrictionCurve  = SetFrictionCurves(forwardFrictionCurve, .2f, 2f, 2f, 2f);
            sidewaysFrictionCurve = SetFrictionCurves(sidewaysFrictionCurve, .25f, 2f, 2f, 2f);
            wheelCollider.forceAppPointDistance = Mathf.Clamp(wheelCollider.forceAppPointDistance, .35f, 1f);
            break;

        case RCC_Settings.BehaviorType.Drift:
            forwardFrictionCurve  = SetFrictionCurves(forwardFrictionCurve, .3f, 1f, .8f, 1f);
            sidewaysFrictionCurve = SetFrictionCurves(sidewaysFrictionCurve, .3f, 1f, .5f, 1f);
            wheelCollider.forceAppPointDistance = Mathf.Clamp(wheelCollider.forceAppPointDistance, .1f, 1f);
            if (carController._wheelTypeChoise == RCC_CarControllerV3.WheelType.FWD)
            {
                Debug.LogWarning("Current behavior mode is ''Drift'', but your vehicle named " + carController.name + " was FWD. You have to use RWD, AWD, or BIASED to rear wheels. Setting it to *RWD* now. ");
                carController._wheelTypeChoise = RCC_CarControllerV3.WheelType.RWD;
            }
            break;

        case RCC_Settings.BehaviorType.Fun:
            forwardFrictionCurve  = SetFrictionCurves(forwardFrictionCurve, .2f, 2f, 2f, 2f);
            sidewaysFrictionCurve = SetFrictionCurves(sidewaysFrictionCurve, .25f, 2f, 2f, 2f);
            wheelCollider.forceAppPointDistance = Mathf.Clamp(wheelCollider.forceAppPointDistance, .35f, 1f);
            break;

        case RCC_Settings.BehaviorType.Racing:
            forwardFrictionCurve  = SetFrictionCurves(forwardFrictionCurve, .2f, 1f, .8f, .75f);
            sidewaysFrictionCurve = SetFrictionCurves(sidewaysFrictionCurve, .3f, 1f, .25f, .75f);
            wheelCollider.forceAppPointDistance = Mathf.Clamp(wheelCollider.forceAppPointDistance, .25f, 1f);
            break;

        case RCC_Settings.BehaviorType.Simulator:
            forwardFrictionCurve  = SetFrictionCurves(forwardFrictionCurve, .2f, 1f, .8f, .75f);
            sidewaysFrictionCurve = SetFrictionCurves(sidewaysFrictionCurve, .25f, 1f, .5f, .75f);
            wheelCollider.forceAppPointDistance = Mathf.Clamp(wheelCollider.forceAppPointDistance, 0f, 1f);
            break;
        }

        // Assigning new frictons if one of the behavior preset selected above.
        wheelCollider.forwardFriction  = forwardFrictionCurve;
        wheelCollider.sidewaysFriction = sidewaysFrictionCurve;

        // Creating audiosource for skid SFX.
        if (RCCSettings.useSharedAudioSources)
        {
            if (!carController.transform.Find("All Audio Sources/Skid Sound AudioSource"))
            {
                audioSource = RCC_CreateAudioSource.NewAudioSource(carController.gameObject, "Skid Sound AudioSource", 5f, 50f, 0f, audioClip, true, true, false);
            }
            else
            {
                audioSource = carController.transform.Find("All Audio Sources/Skid Sound AudioSource").GetComponent <AudioSource>();
            }
        }
        else
        {
            audioSource = RCC_CreateAudioSource.NewAudioSource(carController.gameObject, "Skid Sound AudioSource", 5f, 50f, 0f, audioClip, true, true, false);
            audioSource.transform.position = transform.position;
        }

        // Creating all ground particles, and adding them to list.
        if (!RCCSettings.dontUseAnyParticleEffects)
        {
            for (int i = 0; i < RCCGroundMaterials.frictions.Length; i++)
            {
                GameObject ps = (GameObject)Instantiate(RCCGroundMaterials.frictions [i].groundParticles, transform.position, transform.rotation) as GameObject;
                emission         = ps.GetComponent <ParticleSystem> ().emission;
                emission.enabled = false;
                ps.transform.SetParent(transform, false);
                ps.transform.localPosition = Vector3.zero;
                ps.transform.localRotation = Quaternion.identity;
                allWheelParticles.Add(ps.GetComponent <ParticleSystem> ());
            }
        }

        GameObject newPivot = new GameObject("Pivot_" + wheelModel.transform.name);

        newPivot.transform.position = RCC_GetBounds.GetBoundsCenter(wheelModel.transform);
        newPivot.transform.rotation = transform.rotation;
        newPivot.transform.SetParent(wheelModel.transform.parent, true);
        wheelModel.SetParent(newPivot.transform, true);
        wheelModel = newPivot.transform;
    }
Ejemplo n.º 16
0
    void Start()
    {
        carController  = GetComponentInParent <RCC_CarControllerV3>();
        _light         = GetComponent <Light>();
        _light.enabled = true;
        lensFlare      = GetComponent <LensFlare> ();

        if (lensFlare)
        {
            if (_light.flare != null)
            {
                _light.flare = null;
            }
        }

        if (RCCSettings.useLightProjectorForLightingEffect)
        {
            projector = GetComponent <Projector>();
            if (projector == null)
            {
                projector = ((GameObject)Instantiate(RCCSettings.projector, transform.position, transform.rotation)).GetComponent <Projector>();
                projector.transform.SetParent(transform, true);
            }
            projector.ignoreLayers = RCCSettings.projectorIgnoreLayer;
            if (lightType != LightType.HeadLight)
            {
                projector.transform.localRotation = Quaternion.Euler(20f, transform.localPosition.z > 0f ? 0f : 180f, 0f);
            }
            Material newMaterial = new Material(projector.material);
            projector.material = newMaterial;
        }

        if (RCCSettings.useLightsAsVertexLights)
        {
            _light.renderMode  = LightRenderMode.ForceVertex;
            _light.cullingMask = 0;
        }
        else
        {
            _light.renderMode = LightRenderMode.ForcePixel;
        }

        if (lightType == LightType.Indicator)
        {
            if (!carController.transform.Find("All Audio Sources/Indicator Sound AudioSource"))
            {
                indicatorSound = RCC_CreateAudioSource.NewAudioSource(carController.gameObject, "Indicator Sound AudioSource", 1f, 3f, 1, indicatorClip, false, false, false);
            }
            else
            {
                indicatorSound = carController.transform.Find("All Audio Sources/Indicator Sound AudioSource").GetComponent <AudioSource>();
            }
        }

        RCC_Light[] allLights = carController.GetComponentsInChildren <RCC_Light> ();

        for (int i = 0; i < allLights.Length; i++)
        {
            if (allLights [i].lightType == LightType.ParkLight)
            {
                parkLightFound = true;
            }

            if (allLights [i].lightType == LightType.HighBeamHeadLight)
            {
                highBeamLightFound = true;
            }
        }

        CheckRotation();
        CheckLensFlare();
    }
Ejemplo n.º 17
0
    void Awake()
    {
        rigid                    = GetComponent <Rigidbody>();
        rigid.drag               = 1f;
        rigid.angularDrag        = 4f;
        rigid.maxAngularVelocity = 2.5f;

        Light[] allLights = GetComponentsInChildren <Light>();

        foreach (Light l in allLights)
        {
            l.renderMode  = LightRenderMode.ForceVertex;
            l.cullingMask = 0;
        }

        distance = 50f;

        if (!bodyCollider)
        {
            //Debug.LogWarning (transform.name + "is missing collider in HR_TrafficCar script. Select your vehicle collider. Assigning collider automatically now, but it may select wrong collider...");
            bodyCollider = GetComponentInChildren <BoxCollider> ();
        }

        GameObject triggerColliderGO = new GameObject("TriggerVolume");

        triggerColliderGO.transform.position = bodyCollider.bounds.center;
        triggerColliderGO.transform.rotation = bodyCollider.transform.rotation;
        triggerColliderGO.transform.SetParent(transform, true);
        triggerColliderGO.transform.localScale = bodyCollider.transform.localScale;
        triggerColliderGO.AddComponent <BoxCollider> ();
        triggerColliderGO.GetComponent <BoxCollider>().isTrigger = true;
        triggerColliderGO.GetComponent <BoxCollider> ().size     = bodyCollider.size;
        triggerColliderGO.GetComponent <BoxCollider> ().center   = bodyCollider.center;

        triggerCollider        = triggerColliderGO.GetComponent <BoxCollider>();
        triggerCollider.size   = new Vector3(bodyCollider.size.x * 1.5f, bodyCollider.size.y, bodyCollider.size.z + (bodyCollider.size.z * 3f));
        triggerCollider.center = new Vector3(bodyCollider.center.x, 0f, bodyCollider.center.z + (triggerCollider.size.z / 2f) - (bodyCollider.size.z / 2f));

        if (HR_GamePlayHandler.dayOrNight == HR_GamePlayHandler.DayOrNight.Night || HR_GamePlayHandler.dayOrNight == HR_GamePlayHandler.DayOrNight.Rainy)
        {
            headlightsOn = true;
        }
        else
        {
            headlightsOn = false;
        }

        engineSoundSource = RCC_CreateAudioSource.NewAudioSource(gameObject, "Engine Sound", 2f, 5f, 1f, engineSound, true, true, false);
        //engineSoundSource.transform.localPosition = new Vector3(engineSoundSource.transform.localPosition.x, GameObject.FindObjectOfType<CarCamera>().height, -GameObject.FindObjectOfType<CarCamera>().distance);
        engineSoundSource.pitch = 1.5f;

        rigid.constraints = RigidbodyConstraints.FreezeRotationX | RigidbodyConstraints.FreezeRotationZ | RigidbodyConstraints.FreezePositionY;

        _maximumSpeed = maximumSpeed;

        Transform[] allTransforms = GetComponentsInChildren <Transform>();

        foreach (Transform t in allTransforms)
        {
            t.gameObject.layer = (int)Mathf.Log(HR_HighwayRacerProperties.Instance.trafficCarsLayer.value, 2);
        }

        triggerCollider.gameObject.layer = LayerMask.NameToLayer("TrafficCarVolume");
    }
Ejemplo n.º 18
0
    public void CreateWheelColliders()     //функция для редактора
    {
        List <Transform> allWheelModels = new List <Transform>();

        allWheelModels.Add(FrontLeftWheelTransform); allWheelModels.Add(FrontRightWheelTransform); allWheelModels.Add(RearLeftWheelTransform); allWheelModels.Add(RearRightWheelTransform);

        if (allWheelModels != null && allWheelModels[0] == null)
        {
            Debug.LogError("You haven't choose your Wheel Models. Please select all of your Wheel Models before creating Wheel Colliders. Script needs to know their sizes and positions, aye?");
            return;
        }

        transform.rotation = Quaternion.identity;

        GameObject WheelColliders = new GameObject("Wheel Colliders");

        WheelColliders.transform.SetParent(transform, false);
        WheelColliders.transform.localRotation = Quaternion.identity;
        WheelColliders.transform.localPosition = Vector3.zero;
        WheelColliders.transform.localScale    = Vector3.one;

        foreach (Transform wheel in allWheelModels)
        {
            GameObject wheelcollider = new GameObject(wheel.transform.name);

            wheelcollider.transform.position = wheel.transform.position;
            wheelcollider.transform.rotation = transform.rotation;
            wheelcollider.transform.name     = wheel.transform.name;
            wheelcollider.transform.SetParent(WheelColliders.transform);
            wheelcollider.transform.localScale = Vector3.one;
            wheelcollider.AddComponent <WheelCollider>();

            Bounds     biggestBound = new Bounds();
            Renderer[] renderers    = wheel.GetComponentsInChildren <Renderer>();

            foreach (Renderer render in renderers)
            {
                if (render != GetComponent <Renderer>())
                {
                    if (render.bounds.size.z > biggestBound.size.z)
                    {
                        biggestBound = render.bounds;
                    }
                }
            }

            wheelcollider.GetComponent <WheelCollider>().radius = (biggestBound.extents.y) / transform.localScale.y;
            wheelcollider.AddComponent <RCC_WheelCollider>();
            JointSpring spring = wheelcollider.GetComponent <WheelCollider>().suspensionSpring;

            spring.spring         = 40000f;
            spring.damper         = 2000f;
            spring.targetPosition = .4f;

            wheelcollider.GetComponent <WheelCollider>().suspensionSpring      = spring;
            wheelcollider.GetComponent <WheelCollider>().suspensionDistance    = .2f;
            wheelcollider.GetComponent <WheelCollider>().forceAppPointDistance = .1f;
            wheelcollider.GetComponent <WheelCollider>().mass             = 40f;
            wheelcollider.GetComponent <WheelCollider>().wheelDampingRate = 1f;

            WheelFrictionCurve sidewaysFriction;
            WheelFrictionCurve forwardFriction;

            sidewaysFriction = wheelcollider.GetComponent <WheelCollider>().sidewaysFriction;
            forwardFriction  = wheelcollider.GetComponent <WheelCollider>().forwardFriction;

            wheelcollider.transform.localPosition = new Vector3(wheelcollider.transform.localPosition.x, wheelcollider.transform.localPosition.y + wheelcollider.GetComponent <WheelCollider>().suspensionDistance, wheelcollider.transform.localPosition.z);

            forwardFriction.extremumSlip   = .2f;
            forwardFriction.extremumValue  = 1;
            forwardFriction.asymptoteSlip  = .8f;
            forwardFriction.asymptoteValue = .75f;
            forwardFriction.stiffness      = 1.5f;

            sidewaysFriction.extremumSlip   = .25f;
            sidewaysFriction.extremumValue  = 1;
            sidewaysFriction.asymptoteSlip  = .5f;
            sidewaysFriction.asymptoteValue = .75f;
            sidewaysFriction.stiffness      = 1.5f;

            wheelcollider.GetComponent <WheelCollider>().sidewaysFriction = sidewaysFriction;
            wheelcollider.GetComponent <WheelCollider>().forwardFriction  = forwardFriction;
        }

        RCC_WheelCollider[] allWheelColliders = new RCC_WheelCollider[allWheelModels.Count];
        allWheelColliders = GetComponentsInChildren <RCC_WheelCollider>();

        AudioSource audioSource = RCC_CreateAudioSource.NewAudioSource(gameObject, "Skid Sound AudioSource", 5, 50, 0, null, true, true, false);

        for (int l = 0; l < allWheelColliders.Length; l++)
        {
            for (int i = 0; i < RCC_GroundMaterials.Instance.frictions.Length; i++)
            {
                ParticleSystem.EmissionModule emission;
                GameObject ps = (GameObject)Instantiate(RCC_GroundMaterials.Instance.frictions[i].groundParticles,
                                                        transform.position, transform.rotation, allWheelColliders[l].transform) as GameObject;
                emission                   = ps.GetComponent <ParticleSystem>().emission;
                emission.enabled           = false;
                ps.transform.localPosition = Vector3.zero;
                ps.transform.localRotation = Quaternion.identity;
                allWheelColliders[l].allWheelParticles.Add(ps.GetComponent <ParticleSystem>());
            }
            allWheelColliders[l].audioSource = audioSource;

            allWheelColliders[l].carController = this;
            allWheelColliders[l].carRigid      = GetComponent <Rigidbody>();
            allWheelColliders[l].wheelCollider = GetComponent <WheelCollider>();
            allWheelColliders[l].allWheelColliders.Add(allWheelColliders[0]);
            allWheelColliders[l].allWheelColliders.Add(allWheelColliders[1]);
            allWheelColliders[l].allWheelColliders.Add(allWheelColliders[2]);
            allWheelColliders[l].allWheelColliders.Add(allWheelColliders[3]);
            allWheelColliders[l].allWheelColliders.Remove(allWheelColliders[l]);
        }

        FrontLeftWheelCollider  = allWheelColliders[0];
        FrontRightWheelCollider = allWheelColliders[1];
        RearLeftWheelCollider   = allWheelColliders[2];
        RearRightWheelCollider  = allWheelColliders[3];
    }
Ejemplo n.º 19
0
    void Awake()
    {
        carController = GetComponentInParent <RCC_CarControllerV3>();
        rigid         = carController.GetComponent <Rigidbody>();
        wheelCollider = GetComponent <WheelCollider>();

        if (!RCC_Settings.Instance.dontUseSkidmarks)
        {
            if (FindObjectOfType(typeof(RCC_Skidmarks)))
            {
                skidmarks = FindObjectOfType(typeof(RCC_Skidmarks)) as RCC_Skidmarks;
            }
            else
            {
                Debug.Log("No skidmarks object found. Creating new one...");
                skidmarks = (RCC_Skidmarks)Instantiate(RCC_Settings.Instance.skidmarksManager, Vector3.zero, Quaternion.identity);
            }
        }

        wheelCollider.mass    = rigid.mass / 15f;
        forwardFrictionCurve  = wheelCollider.forwardFriction;
        sidewaysFrictionCurve = wheelCollider.sidewaysFriction;

        switch (RCC_Settings.Instance.behaviorType)
        {
        case RCC_Settings.BehaviorType.SemiArcade:
            forwardFrictionCurve  = SetFrictionCurves(forwardFrictionCurve, .2f, 2f, 2f, 2f);
            sidewaysFrictionCurve = SetFrictionCurves(sidewaysFrictionCurve, .25f, 2f, 2f, 2f);
            wheelCollider.forceAppPointDistance = Mathf.Clamp(wheelCollider.forceAppPointDistance, .35f, 1f);
            break;

        case RCC_Settings.BehaviorType.Drift:
            forwardFrictionCurve  = SetFrictionCurves(forwardFrictionCurve, .25f, 1f, .8f, .5f);
            sidewaysFrictionCurve = SetFrictionCurves(sidewaysFrictionCurve, .4f, 1f, .5f, .75f);
            wheelCollider.forceAppPointDistance = Mathf.Clamp(wheelCollider.forceAppPointDistance, .1f, 1f);
            if (carController._wheelTypeChoise == RCC_CarControllerV3.WheelType.FWD)
            {
                Debug.LogError("Current behavior mode is ''Drift'', but your vehicle named " + carController.name + " was FWD. You have to use RWD, AWD, or BIASED to rear wheels. Setting it to *RWD* now. ");
                carController._wheelTypeChoise = RCC_CarControllerV3.WheelType.RWD;
            }
            break;

        case RCC_Settings.BehaviorType.Fun:
            forwardFrictionCurve  = SetFrictionCurves(forwardFrictionCurve, .2f, 2f, 2f, 2f);
            sidewaysFrictionCurve = SetFrictionCurves(sidewaysFrictionCurve, .25f, 2f, 2f, 2f);
            wheelCollider.forceAppPointDistance = Mathf.Clamp(wheelCollider.forceAppPointDistance, .75f, 2f);
            break;

        case RCC_Settings.BehaviorType.Racing:
            forwardFrictionCurve  = SetFrictionCurves(forwardFrictionCurve, .2f, 1f, .8f, .75f);
            sidewaysFrictionCurve = SetFrictionCurves(sidewaysFrictionCurve, .3f, 1f, .25f, .75f);
            wheelCollider.forceAppPointDistance = Mathf.Clamp(wheelCollider.forceAppPointDistance, .25f, 1f);
            break;

        case RCC_Settings.BehaviorType.Simulator:
            forwardFrictionCurve  = SetFrictionCurves(forwardFrictionCurve, .2f, 1f, .8f, .75f);
            sidewaysFrictionCurve = SetFrictionCurves(sidewaysFrictionCurve, .25f, 1f, .5f, .75f);
            wheelCollider.forceAppPointDistance = Mathf.Clamp(wheelCollider.forceAppPointDistance, .1f, 1f);
            break;
        }

        orgForwardStiffness            = forwardFrictionCurve.stiffness;
        orgSidewaysStiffness           = sidewaysFrictionCurve.stiffness;
        wheelCollider.forwardFriction  = forwardFrictionCurve;
        wheelCollider.sidewaysFriction = sidewaysFrictionCurve;

        if (RCC_Settings.Instance.useSharedAudioSources)
        {
            if (!carController.transform.Find("All Audio Sources/Skid Sound AudioSource"))
            {
                audioSource = RCC_CreateAudioSource.NewAudioSource(carController.gameObject, "Skid Sound AudioSource", 5, 50, 0, audioClip, true, true, false);
            }
            else
            {
                audioSource = carController.transform.Find("All Audio Sources/Skid Sound AudioSource").GetComponent <AudioSource>();
            }
        }
        else
        {
            audioSource = RCC_CreateAudioSource.NewAudioSource(carController.gameObject, "Skid Sound AudioSource", 5, 50, 0, audioClip, true, true, false);
            audioSource.transform.position = transform.position;
        }

        if (!RCC_Settings.Instance.dontUseAnyParticleEffects)
        {
            for (int i = 0; i < RCC_GroundMaterials.Instance.frictions.Length; i++)
            {
                GameObject ps = (GameObject)Instantiate(RCC_GroundMaterials.Instance.frictions[i].groundParticles, transform.position, transform.rotation) as GameObject;
                emission         = ps.GetComponent <ParticleSystem>().emission;
                emission.enabled = false;
                ps.transform.SetParent(transform, false);
                ps.transform.localPosition = Vector3.zero;
                ps.transform.localRotation = Quaternion.identity;
                allWheelParticles.Add(ps.GetComponent <ParticleSystem>());
            }
        }
    }
Ejemplo n.º 20
0
    void Awake()
    {
        carController = GetComponentInParent <RCC_CarControllerV3>();
        rigid         = carController.GetComponent <Rigidbody> ();

        // Are we going to use skidmarks? If we do, get or create SkidmarksManager on scene.
        if (!RCCSettings.dontUseSkidmarks)
        {
            if (FindObjectOfType(typeof(RCC_Skidmarks)))
            {
                skidmarks = FindObjectOfType(typeof(RCC_Skidmarks)) as RCC_Skidmarks;
            }
            else
            {
                skidmarks = (RCC_Skidmarks)Instantiate(RCCSettings.skidmarksManager, Vector3.zero, Quaternion.identity);
            }
        }

        // Increasing WheelCollider mass for avoiding unstable behavior. Only in Unity 5.
        wheelCollider.mass = rigid.mass / 15f;

        // Getting friction curves.
        forwardFrictionCurve  = wheelCollider.forwardFriction;
        sidewaysFrictionCurve = wheelCollider.sidewaysFriction;

        // Proper settings for selected behavior type.
        switch (RCCSettings.behaviorType)
        {
        case RCC_Settings.BehaviorType.HighwayRacer:
            forwardFrictionCurve  = SetFrictionCurves(forwardFrictionCurve, .2f, 2f, 2f, 2f);
            sidewaysFrictionCurve = SetFrictionCurves(sidewaysFrictionCurve, .25f, 2f, 2f, 2f);
            wheelCollider.forceAppPointDistance = Mathf.Clamp(wheelCollider.forceAppPointDistance, .35f, 1f);
            break;
        }

        // Getting default stiffness.
        orgForwardStiffness  = forwardFrictionCurve.stiffness;
        orgSidewaysStiffness = sidewaysFrictionCurve.stiffness;

        // Assigning new frictons if one of the behavior preset selected above.
        wheelCollider.forwardFriction  = forwardFrictionCurve;
        wheelCollider.sidewaysFriction = sidewaysFrictionCurve;

        // Creating audiosource for skid SFX.
        if (RCCSettings.useSharedAudioSources)
        {
            if (!carController.transform.Find("All Audio Sources/Skid Sound AudioSource"))
            {
                audioSource = RCC_CreateAudioSource.NewAudioSource(carController.gameObject, "Skid Sound AudioSource", 5, 50, 0, audioClip, true, true, false);
            }
            else
            {
                audioSource = carController.transform.Find("All Audio Sources/Skid Sound AudioSource").GetComponent <AudioSource>();
            }
        }
        else
        {
            audioSource = RCC_CreateAudioSource.NewAudioSource(carController.gameObject, "Skid Sound AudioSource", 5, 50, 0, audioClip, true, true, false);
            audioSource.transform.position = transform.position;
        }

        // Creating all ground particles, and adding them to list.
        if (!RCCSettings.dontUseAnyParticleEffects)
        {
            for (int i = 0; i < RCCGroundMaterials.frictions.Length; i++)
            {
                GameObject ps = (GameObject)Instantiate(RCCGroundMaterials.frictions [i].groundParticles, transform.position, transform.rotation) as GameObject;
                emission         = ps.GetComponent <ParticleSystem> ().emission;
                emission.enabled = false;
                ps.transform.SetParent(transform, false);
                ps.transform.localPosition = Vector3.zero;
                ps.transform.localRotation = Quaternion.identity;
                allWheelParticles.Add(ps.GetComponent <ParticleSystem> ());
            }
        }
    }