llllllllll Geplaatst: 2 mei 2014 Rapport Geplaatst: 2 mei 2014 Hallo allemaal, ik heb een tutorial-reeks gekeken --> <--en heb de scripts "gekopieerd", maar als ik dan rij met mn "auto" en dan maximale snelheid rijd en dan stuur dan flipt ie om, en als ik maximale snelheid rijd en dan de handrem gebruik maakt ie een stoppie. Ik post de scripts ff (javascript) Scripts op het "chassis" #pragma strict //CarControllerScript, Op het Chassis var centerOfMass : Vector3; var wheelFL : WheelCollider; var wheelFR : WheelCollider; var wheelRL : WheelCollider; var wheelRR : WheelCollider; var wheelFLTrans : Transform; var wheelFRTrans : Transform; var wheelRLTrans : Transform; var wheelRRTrans : Transform; var lowestSteerAtSpeed : float = 50; var lowSpeedSteerAngel : float = 10; var highSpeedSteerAngel : float = 1; var decellarationSpeed : float = 30; var maxTorque : float = 50; var currentSpeed : float; var topSpeed : float = 150; var maxReverseSpeed : float = 50; var backLightObject : GameObject; var idleLightMaterial : Material; var brakeLightMaterial : Material; var reverseLightMaterial : Material; private var braked : boolean = false; var maxBrakeTorque : float = 100; private var mySidewayFriction : float; private var myForwardFriction : float; private var slipSidewayFriction : float; private var slipForwardFriction : float; var speedOMeterDial : Texture2D; var speedOMeterPointer : Texture2D; var gearRatio : int[]; function Start () { rigidbody.centerOfMass=centerOfMass; SetValues(); } function SetValues (){ myForwardFriction = wheelRR.forwardFriction.stiffness; mySidewayFriction = wheelRR.sidewaysFriction.stiffness; slipForwardFriction = 0.05; slipSidewayFriction = 0.085; } function FixedUpdate () { Controle (); HandBrake(); } function Update(){ wheelFLTrans.Rotate(wheelFL.rpm/60*360*Time.deltaTime,0,0); wheelFRTrans.Rotate(wheelFR.rpm/60*360*Time.deltaTime,0,0); wheelRLTrans.Rotate(wheelRL.rpm/60*360*Time.deltaTime,0,0); wheelRRTrans.Rotate(wheelRR.rpm/60*360*Time.deltaTime,0,0); wheelFLTrans.localEulerAngles.y = wheelFL.steerAngle - wheelFLTrans.localEulerAngles.z; wheelFRTrans.localEulerAngles.y = wheelFR.steerAngle - wheelFRTrans.localEulerAngles.z; BackLight (); WheelPosition(); ReverseSlip(); EngineSound(); } function Controle (){ currentSpeed = 2*22/7*wheelRL.radius*wheelRL.rpm*60/1000; currentSpeed = Mathf.Round(currentSpeed); if (currentSpeed < topSpeed && currentSpeed > -maxReverseSpeed && !braked){ wheelRR.motorTorque = maxTorque * Input.GetAxis("Vertical"); wheelRL.motorTorque = maxTorque * Input.GetAxis("Vertical"); } else { wheelRR.motorTorque =0; wheelRL.motorTorque =0; } if (Input.GetButton("Vertical")==false){ wheelRR.brakeTorque = decellarationSpeed; wheelRL.brakeTorque = decellarationSpeed; } else{ wheelRR.brakeTorque = 0; wheelRL.brakeTorque = 0; } var speedFactor = rigidbody.velocity.magnitude/lowestSteerAtSpeed; var currentSteerAngel = Mathf.Lerp(lowSpeedSteerAngel,highSpeedSteerAngel,speedFactor); currentSteerAngel *= Input.GetAxis("Horizontal"); wheelFL.steerAngle = currentSteerAngel; wheelFR.steerAngle = currentSteerAngel; } function BackLight (){ if (currentSpeed > 0 && Input.GetAxis("Vertical")<0&&!braked){ backLightObject.renderer.material = brakeLightMaterial; } else if (currentSpeed < 0 && Input.GetAxis("Vertical")>0&&!braked){ backLightObject.renderer.material = brakeLightMaterial; } else if (currentSpeed < 0 && Input.GetAxis("Vertical")<0&&!braked){ backLightObject.renderer.material = reverseLightMaterial; } else if (!braked){ backLightObject.renderer.material = idleLightMaterial; } } function WheelPosition(){ var hit : RaycastHit; var wheelPos : Vector3; //FL if (Physics.Raycast(wheelFL.transform.position, -wheelFL.transform.up,hit,wheelFL.radius+wheelFL.suspensionDistance) ){ wheelPos = hit.point+wheelFL.transform.up * wheelFL.radius; } else { wheelPos = wheelFL.transform.position -wheelFL.transform.up* wheelFL.suspensionDistance; } wheelFLTrans.position = wheelPos; //FR if (Physics.Raycast(wheelFR.transform.position, -wheelFR.transform.up,hit,wheelFR.radius+wheelFR.suspensionDistance) ){ wheelPos = hit.point+wheelFR.transform.up * wheelFR.radius; } else { wheelPos = wheelFR.transform.position -wheelFR.transform.up* wheelFR.suspensionDistance; } wheelFRTrans.position = wheelPos; //RL if (Physics.Raycast(wheelRL.transform.position, -wheelRL.transform.up,hit,wheelRL.radius+wheelRL.suspensionDistance) ){ wheelPos = hit.point+wheelRL.transform.up * wheelRL.radius; } else { wheelPos = wheelRL.transform.position -wheelRL.transform.up* wheelRL.suspensionDistance; } wheelRLTrans.position = wheelPos; //RR if (Physics.Raycast(wheelRR.transform.position, -wheelRR.transform.up,hit,wheelRR.radius+wheelRR.suspensionDistance) ){ wheelPos = hit.point+wheelRR.transform.up * wheelRR.radius; } else { wheelPos = wheelRR.transform.position -wheelRR.transform.up* wheelRR.suspensionDistance; } wheelRRTrans.position = wheelPos; } function HandBrake(){ if (Input.GetButton("Jump")){ braked = true; } else{ braked = false; } if (braked){ if (currentSpeed > 1){ wheelFR.brakeTorque = maxBrakeTorque; wheelFL.brakeTorque = maxBrakeTorque; wheelRR.motorTorque =0; wheelRL.motorTorque =0; SetRearSlip(slipForwardFriction ,slipSidewayFriction); } else if (currentSpeed < 0){ wheelRR.brakeTorque = maxBrakeTorque; wheelRL.brakeTorque = maxBrakeTorque; wheelRR.motorTorque =0; wheelRL.motorTorque =0; SetRearSlip(1 ,1); } else { SetRearSlip(1 ,1); } if (currentSpeed < 1 && currentSpeed > -1){ backLightObject.renderer.material = idleLightMaterial; } else { backLightObject.renderer.material = brakeLightMaterial; } } else { wheelFR.brakeTorque = 0; wheelFL.brakeTorque = 0; SetRearSlip(myForwardFriction ,mySidewayFriction); } } function ReverseSlip(){ if (currentSpeed <0){ SetFrontSlip(slipForwardFriction ,slipSidewayFriction); } else { SetFrontSlip(myForwardFriction ,mySidewayFriction); } } function SetRearSlip (currentForwardFriction : float,currentSidewayFriction : float){ wheelRR.forwardFriction.stiffness = currentForwardFriction; wheelRL.forwardFriction.stiffness = currentForwardFriction; wheelRR.sidewaysFriction.stiffness = currentSidewayFriction; wheelRL.sidewaysFriction.stiffness = currentSidewayFriction; } function SetFrontSlip (currentForwardFriction : float,currentSidewayFriction : float){ wheelFR.forwardFriction.stiffness = currentForwardFriction; wheelFL.forwardFriction.stiffness = currentForwardFriction; wheelFR.sidewaysFriction.stiffness = currentSidewayFriction; wheelFL.sidewaysFriction.stiffness = currentSidewayFriction; } function EngineSound(){ for (var i = 0; i < gearRatio.length; i++){ if(gearRatio[i]> currentSpeed){ break; } } var gearMinValue : float = 0.00; var gearMaxValue : float = 0.00; if (i == 0){ gearMinValue = 0; } else { gearMinValue = gearRatio[i-1]; } gearMaxValue = gearRatio[i]; var enginePitch : float = ((currentSpeed - gearMinValue)/(gearMaxValue - gearMinValue))+1; audio.pitch = enginePitch; } function OnGUI (){ GUI.DrawTexture(Rect(Screen.width - 300,Screen.height-150,300,150),speedOMeterDial); var speedFactor : float = currentSpeed / topSpeed; var rotationAngle : float; if (currentSpeed >= 0){ rotationAngle = Mathf.Lerp(0,180,speedFactor); } else { rotationAngle = Mathf.Lerp(0,180,-speedFactor); } GUIUtility.RotateAroundPivot(rotationAngle,Vector2(Screen.width-150,Screen.height)); GUI.DrawTexture(Rect(Screen.width - 300,Screen.height-150,300,300),speedOMeterPointer); } //AntiRollScript, Op het Chassis var WheelL : WheelCollider; var WheelR : WheelCollider; var AntiRoll = 5000.0; function FixedUpdate () { var hit : WheelHit; var travelL = 1.0; var travelR = 1.0; var groundedL = WheelL.GetGroundHit(hit); if (groundedL) travelL = (-WheelL.transform.InverseTransformPoint(hit.point).y - WheelL.radius) / WheelL.suspensionDistance; var groundedR = WheelR.GetGroundHit(hit); if (groundedR) travelR = (-WheelR.transform.InverseTransformPoint(hit.point).y - WheelR.radius) / WheelR.suspensionDistance; var antiRollForce = (travelL - travelR) * AntiRoll; if (groundedL) rigidbody.AddForceAtPosition(WheelL.transform.up * -antiRollForce, WheelL.transform.position); if (groundedR) rigidbody.AddForceAtPosition(WheelR.transform.up * antiRollForce, WheelR.transform.position); } -------------------------------------------------------------------------------------------------------------------------------------------------------- En de Settings van: Rigidbody: <-<Mass=3000> <Drag=0> <Angular Drag=0.05> <Use Gravity=True> <Is Kinematic=False> <Interpolate=None> <Collision Detection=Discrete>-> <-<Constrains-> <Freeze Position X,Y,Z allemaal false> <Freeze Rotation X,Y,Z allemaal false>-> Ik hoop dat iemand mij hermee kan/wil helpen, aangezien de frustraties hoog oplopen M.V.G. llllllllll Reageren
llllllllll Geplaatst: 2 mei 2014 Auteur Rapport Geplaatst: 2 mei 2014 Welke error krijg je? geen een, de auto gaat over de kop als ik een bocht neem op maximale snelheid (150 km/h of 150 mp/h) Reageren
Ezra24rct3 Geplaatst: 2 mei 2014 Rapport Geplaatst: 2 mei 2014 Zet antiroll eens op 0, en kijk dan, en daarna op 1000 of 5000 Reageren
llllllllll Geplaatst: 2 mei 2014 Auteur Rapport Geplaatst: 2 mei 2014 (bewerkt) Zet antiroll eens op 0, en kijk dan, en daarna op 1000 of 5000 ik ga ff kijken, Bewerkt: 3 mei 2014 door llllllllll Reageren
llllllllll Geplaatst: 3 mei 2014 Auteur Rapport Geplaatst: 3 mei 2014 Ik heb het getal op 15.000 gezet, en dat werkte, maar als ik op max. snelheid rij, en naar links of rechts stuur gaat het goed, en als ik dan de handrem indtuk krijg je dit. Ik wil dus eigenlijk dat de auto op de weg / box collider blijft plakken. Reageren
Recommended Posts
Een reactie plaatsen
Je kan nu een reactie plaatsen en pas achteraf registreren. Als je al lid bent, log eerst in om met je eigen account een reactie te plaatsen.