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; }
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; } } }
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; }
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; } }
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); } }
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); } } } } }
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; }
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; }
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>(); } } }
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; }
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; }
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); } }
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; } }
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; }
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(); }
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"); }
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]; }
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>()); } } }
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> ()); } } }