public override void Start() { base.Start(); targetDrive = GetComponent <DriveForce>(); //Get maximum possible RPM GetMaxRPM(); }
public virtual void Start() { vp = (VehicleParent)F.GetTopmostParentComponent <VehicleParent>(transform); vp.trans = this; targetDrive = GetComponent <DriveForce>(); newDrive = gameObject.AddComponent <DriveForce>(); }
public override void Start() { base.Start(); targetDrive = GetComponent<DriveForce>(); //Get maximum possible RPM GetMaxRPM(); }
public virtual void Start() { vp = (VehicleParent)F.GetTopmostParentComponent<VehicleParent>(transform); targetDrive = GetComponent<DriveForce>(); newDrive = gameObject.AddComponent<DriveForce>(); if (legacyTorqueMultiplier) { Debug.LogWarning("Legacy torque multiplier is obsolete and will be removed in a future update.", this); } }
void Start() { this.tr = this.transform; this.rb = (Rigidbody)F.GetTopmostParentComponent <Rigidbody>(this.tr); this.vp = (VehicleParent)F.GetTopmostParentComponent <VehicleParent>(this.tr); this.targetDrive = this.GetComponent <DriveForce>(); this.flippedSide = Vector3.Dot(this.tr.forward, this.vp.transform.right) < 0; this.flippedSideFactor = this.flippedSide ? -1 : 1; this.initialRotation = this.tr.localRotation; if (Application.isPlaying) { this.GetCamber(); //Generate the hard collider if (this.generateHardCollider) { var cap = new GameObject("Compress Collider"); cap.layer = GlobalControl.ignoreWheelCastLayer; this.compressTr = cap.transform; this.compressTr.parent = this.tr; this.compressTr.localPosition = Vector3.zero; this.compressTr.localEulerAngles = new Vector3(this.camberAngle, 0, -this.casterAngle * this.flippedSideFactor); this.compressCol = cap.AddComponent <CapsuleCollider>(); this.compressCol.direction = 1; this.setHardColliderRadiusFactor = this.hardColliderRadiusFactor; this.hardColliderRadiusFactorPrev = this.setHardColliderRadiusFactor; this.compressCol.radius = this.wheel.rimWidth * this.hardColliderRadiusFactor; this.compressCol.height = (this.wheel.popped ? this.wheel.rimRadius : Mathf.Lerp(this.wheel.rimRadius, this.wheel.tireRadius, this.wheel.tirePressure)) * 2; this.compressCol.material = GlobalControl.frictionlessMatStatic; } this.steerRangeMax = Mathf.Max(this.steerRangeMin, this.steerRangeMax); this.properties = this.GetComponent <SuspensionPropertyToggle>(); if (this.properties) { this.UpdateProperties(); } } }
void Start() { tr = transform; rb = (Rigidbody)F.GetTopmostParentComponent <Rigidbody>(tr); vp = (VehicleParent)F.GetTopmostParentComponent <VehicleParent>(tr); targetDrive = GetComponent <DriveForce>(); flippedSide = Vector3.Dot(tr.forward, vp.transform.right) < 0; flippedSideFactor = flippedSide ? -1 : 1; initialRotation = tr.localRotation; if (Application.isPlaying) { GetCamber(); //Generate the hard collider if (generateHardCollider) { GameObject cap = new GameObject("Compress Collider"); cap.layer = GlobalControl.ignoreWheelCastLayer; compressTr = cap.transform; compressTr.parent = tr; compressTr.localPosition = Vector3.zero; compressTr.localEulerAngles = new Vector3(camberAngle, 0, -casterAngle * flippedSideFactor); compressCol = cap.AddComponent <CapsuleCollider>(); compressCol.direction = 1; setHardColliderRadiusFactor = hardColliderRadiusFactor; hardColliderRadiusFactorPrev = setHardColliderRadiusFactor; compressCol.radius = wheel.rimWidth * hardColliderRadiusFactor; compressCol.height = (wheel.popped ? wheel.rimRadius : Mathf.Lerp(wheel.rimRadius, wheel.tireRadius, wheel.tirePressure)) * 2; compressCol.material = GlobalControl.frictionlessMatStatic; } steerRangeMax = Mathf.Max(steerRangeMin, steerRangeMax); properties = GetComponent <SuspensionPropertyToggle>(); if (properties) { UpdateProperties(); } } }
public virtual void Start() { vp = transform.root.GetComponent<VehicleParent>(); targetDrive = GetComponent<DriveForce>(); newDrive = gameObject.AddComponent<DriveForce>(); }
void Start() { tr = transform; rb = (Rigidbody)F.GetTopmostParentComponent<Rigidbody>(tr); vp = (VehicleParent)F.GetTopmostParentComponent<VehicleParent>(tr); suspensionParent = tr.parent.GetComponent<Suspension>(); travelDist = suspensionParent.targetCompression; canDetach = detachForce < Mathf.Infinity && Application.isPlaying; initialTirePressure = tirePressure; if (tr.childCount > 0) { //Get rim rim = tr.GetChild(0); //Set up rim glow material if (rimGlow > 0 && Application.isPlaying) { rimMat = new Material(rim.GetComponent<MeshRenderer>().sharedMaterial); rimMat.EnableKeyword("_EMISSION"); rim.GetComponent<MeshRenderer>().material = rimMat; } //Create detached wheel if (canDetach) { detachedWheel = new GameObject(vp.transform.name + "'s Detached Wheel"); detachedWheel.layer = LayerMask.NameToLayer("Detachable Part"); detachFilter = detachedWheel.AddComponent<MeshFilter>(); detachFilter.sharedMesh = rim.GetComponent<MeshFilter>().sharedMesh; MeshRenderer detachRend = detachedWheel.AddComponent<MeshRenderer>(); detachRend.sharedMaterial = rim.GetComponent<MeshRenderer>().sharedMaterial; detachedCol = detachedWheel.AddComponent<MeshCollider>(); detachedCol.convex = true; detachedBody = detachedWheel.AddComponent<Rigidbody>(); detachedBody.mass = mass; } //Get tire if (rim.childCount > 0) { tire = rim.GetChild(0); if (deformAmount > 0 && Application.isPlaying) { tireMat = new Material(tire.GetComponent<MeshRenderer>().sharedMaterial); tire.GetComponent<MeshRenderer>().material = tireMat; } //Create detached tire if (canDetach) { detachedTire = new GameObject("Detached Tire"); detachedTire.transform.parent = detachedWheel.transform; detachedTire.transform.localPosition = Vector3.zero; detachedTire.transform.localRotation = Quaternion.identity; detachTireFilter = detachedTire.AddComponent<MeshFilter>(); detachTireFilter.sharedMesh = tire.GetComponent<MeshFilter>().sharedMesh; MeshRenderer detachTireRend = detachedTire.AddComponent<MeshRenderer>(); detachTireRend.sharedMaterial = tireMat ? tireMat : tire.GetComponent<MeshRenderer>().sharedMaterial; } } if (Application.isPlaying) { //Generate hard collider if (generateHardCollider) { GameObject sphereColNew = new GameObject("Rim Collider"); sphereColNew.layer = GlobalControl.ignoreWheelCastLayer; sphereColTr = sphereColNew.transform; sphereCol = sphereColNew.AddComponent<SphereCollider>(); sphereColTr.parent = tr; sphereColTr.localPosition = Vector3.zero; sphereColTr.localRotation = Quaternion.identity; sphereCol.radius = Mathf.Min(rimWidth * 0.5f, rimRadius * 0.5f); sphereCol.material = GlobalControl.frictionlessMatStatic; } if (canDetach) { detachedWheel.SetActive(false); } } } targetDrive = GetComponent<DriveForce>(); currentRPM = 0; }
public virtual void Start() { vp = transform.root.GetComponent <VehicleParent>(); targetDrive = GetComponent <DriveForce>(); newDrive = gameObject.AddComponent <DriveForce>(); }
//Same as previous, but with torqueFactor multiplier for torque public void SetDrive(DriveForce from, float torqueFactor) { rpm = from.rpm; torque = from.torque * torqueFactor; curve = from.curve; }
public void SetDrive(DriveForce from) { rpm = from.rpm; torque = from.torque; curve = from.curve; }
void Start() { tr = transform; rb = transform.root.GetComponent<Rigidbody>(); vp = tr.root.GetComponent<VehicleParent>(); targetDrive = GetComponent<DriveForce>(); flippedSide = Vector3.Dot(tr.forward, tr.root.right) < 0; flippedSideFactor = flippedSide ? -1 : 1; initialRotation = tr.localRotation; if (Application.isPlaying) { GetCamber(); //Generate the hard collider if (generateHardCollider) { GameObject cap = new GameObject("Compress Collider"); cap.layer = GlobalControl.ignoreWheelCastLayer; compressTr = cap.transform; compressTr.parent = tr; compressTr.localPosition = Vector3.zero; compressTr.localEulerAngles = new Vector3(camberAngle, 0, -casterAngle * flippedSideFactor); compressCol = cap.AddComponent<CapsuleCollider>(); compressCol.direction = 1; setHardColliderRadiusFactor = hardColliderRadiusFactor; hardColliderRadiusFactorPrev = setHardColliderRadiusFactor; compressCol.radius = wheel.rimWidth * hardColliderRadiusFactor; compressCol.height = (wheel.popped ? wheel.rimRadius : Mathf.Lerp(wheel.rimRadius, wheel.tireRadius, wheel.tirePressure)) * 2; compressCol.material = GlobalControl.frictionlessMatStatic; } steerRangeMax = Mathf.Max(steerRangeMin, steerRangeMax); properties = GetComponent<SuspensionPropertyToggle>(); if (properties) { UpdateProperties(); } } }
void Start() { tr = transform; rb = (Rigidbody)F.GetTopmostParentComponent <Rigidbody>(tr); vp = (VehicleParent)F.GetTopmostParentComponent <VehicleParent>(tr); suspensionParent = tr.parent.GetComponent <Suspension>(); travelDist = suspensionParent.targetCompression; canDetach = detachForce < Mathf.Infinity && Application.isPlaying; initialTirePressure = tirePressure; if (tr.childCount > 0) { //Get rim rim = tr.GetChild(0); //Set up rim glow material if (rimGlow > 0 && Application.isPlaying) { rimMat = new Material(rim.GetComponent <MeshRenderer>().sharedMaterial); rimMat.EnableKeyword("_EMISSION"); rim.GetComponent <MeshRenderer>().material = rimMat; } //Create detached wheel if (canDetach) { detachedWheel = new GameObject(vp.transform.name + "'s Detached Wheel"); detachedWheel.layer = LayerMask.NameToLayer("Detachable Part"); detachFilter = detachedWheel.AddComponent <MeshFilter>(); detachFilter.sharedMesh = rim.GetComponent <MeshFilter>().sharedMesh; MeshRenderer detachRend = detachedWheel.AddComponent <MeshRenderer>(); detachRend.sharedMaterial = rim.GetComponent <MeshRenderer>().sharedMaterial; detachedCol = detachedWheel.AddComponent <MeshCollider>(); detachedCol.convex = true; detachedBody = detachedWheel.AddComponent <Rigidbody>(); detachedBody.mass = mass; } //Get tire if (rim.childCount > 0) { tire = rim.GetChild(0); if (deformAmount > 0 && Application.isPlaying) { tireMat = new Material(tire.GetComponent <MeshRenderer>().sharedMaterial); tire.GetComponent <MeshRenderer>().material = tireMat; } //Create detached tire if (canDetach) { detachedTire = new GameObject("Detached Tire"); detachedTire.transform.parent = detachedWheel.transform; detachedTire.transform.localPosition = Vector3.zero; detachedTire.transform.localRotation = Quaternion.identity; detachTireFilter = detachedTire.AddComponent <MeshFilter>(); detachTireFilter.sharedMesh = tire.GetComponent <MeshFilter>().sharedMesh; MeshRenderer detachTireRend = detachedTire.AddComponent <MeshRenderer>(); detachTireRend.sharedMaterial = tireMat ? tireMat : tire.GetComponent <MeshRenderer>().sharedMaterial; } } if (Application.isPlaying) { //Generate hard collider if (generateHardCollider) { GameObject sphereColNew = new GameObject("Rim Collider"); sphereColNew.layer = GlobalControl.ignoreWheelCastLayer; sphereColTr = sphereColNew.transform; sphereCol = sphereColNew.AddComponent <SphereCollider>(); sphereColTr.parent = tr; sphereColTr.localPosition = Vector3.zero; sphereColTr.localRotation = Quaternion.identity; sphereCol.radius = Mathf.Min(rimWidth * 0.5f, rimRadius * 0.5f); sphereCol.material = GlobalControl.frictionlessMatStatic; } if (canDetach) { detachedWheel.SetActive(false); } } } targetDrive = GetComponent <DriveForce>(); currentRPM = 0; }