Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!
Werbeanzeige
C#-Quelltext |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 |
private void CalculateEngine() { if (Input.GetAxis("Vertical") > 0) { throttleFactor = Input.GetAxis("Vertical"); } else { throttleFactor = 0.0f; } int drivenWheels = 0; float totalRpm = 0.0f; foreach (Wheel wheel in wheels) { if (wheel.isDriven) { drivenWheels++; totalRpm += wheel.wheelCollider.rpm * currentGearRatio * finalGearRatio; } } engineRPM = totalRpm / drivenWheels; currentSpeed = (wheels[0].wheelCollider.rpm * 2 * Mathf.PI * wheelRadius) * 60 / 1000; if (engineRPM < idleEngineRPM) { engineRPM = idleEngineRPM; } if (engineRPM > maxEngineRPM) { engineRPM = maxEngineRPM; } if ((engineRPM < maxEngineRPM) && (engineRunning)) { // Fake torque curve float powerPercent = maxOutputPS / gearShiftUpRPM; float motorPower; if (engineRPM < gearShiftUpRPM) { motorPower = engineRPM * powerPercent; } else { motorPower = (engineRPM * powerPercent) - (0.01f * engineRPM * maxOutputPS); } float engineTorque = (motorPower / 1.36f * 1000) / (2 * Mathf.PI * (engineRPM / 60)); float throttleWheelTorque = (engineTorque * throttleFactor) / 10 * currentGearRatio * transferGearRatio * finalGearRatio; // Apply Torque to wheels foreach (Wheel wheel in wheels) { if (wheel.isDriven) { wheel.wheelCollider.motorTorque = throttleWheelTorque / drivenWheels; } } } } |
C#-Quelltext |
|
1 |
(engineTorque * throttleFactor) / 10 |
Jein... Naja, ja und nein. Im Prinzip ist das schon richtig, weil ich da erstmal mit einem bestimmten Fahrzeug experimentiere. Es soll aber später möglich sein, andere Motorisierungen, bzw. Fahrzeuge zu simulieren. Sprich es soll durch die Angabe von z.B. PS oder max. Drehmoment, welche bei einer bestimmten Drehzahl (kann ebenfalls angegeben werden) erreicht werden, eben eine solche Kurve errechnet werden. Die muss jetzt nicht als wissenschaftlich und technisch korrekt standhalten, aber halt annähernd eine Leistung rauskommen, die halbwegs real erscheint.Du willst in der Regel doch wohl ein echtes Fahrzeug simulieren. D.h. die Leistungskurve bzw. Drehmomentenkurve ist eigentlich bekannt...
Naja ich denke berechenbar wird das schon sein.
Dieser Beitrag wurde bereits 10 mal editiert, zuletzt von »dot« (29.11.2012, 16:37)
Werbeanzeige