Dodane Driftowanie

This commit is contained in:
Pc
2025-01-19 00:39:25 +01:00
parent f0a3221e04
commit 1a85de2c23

View File

@@ -123,9 +123,9 @@ const float acceleration = 0.2f;
float rotationVelocity = 0.0f; // Prędkość obrotu łazika
const float rotationAcceleration = 0.1f; // Przyspieszenie obrotu
const float rotationAcceleration = 0.075f; // Przyspieszenie obrotu
const float rotationFriction = 0.1f; // Współczynnik tarcia obrotu
const float maxRotationSpeed = 3.0f; // Maksymalna prędkość obrotu
const float maxRotationSpeed = 1.5f; // Maksymalna prędkość obrotu
// Struktura do reprezentacji płotu
struct Plot {
@@ -200,7 +200,7 @@ void UpdateRover(const std::vector<Plot>& fences) {
}
}
// Obracanie
// Obracanie (rotacja z driftowaniem)
if (keyAPressed) {
rotationVelocity += rotationAcceleration;
if (rotationVelocity > maxRotationSpeed) rotationVelocity = maxRotationSpeed;
@@ -210,13 +210,14 @@ void UpdateRover(const std::vector<Plot>& fences) {
if (rotationVelocity < -maxRotationSpeed) rotationVelocity = -maxRotationSpeed;
}
else {
// Hamowanie obrotu (wytracanie prędkości z powodu tarcia)
// Jeśli żadna z klawiszy A/D nie jest wciśnięta, to stopniowo spowalniamy rotację (drift)
float driftFactor = 0.1f; // Mniejsza wartość = dłuższy drift
if (rotationVelocity > 0) {
rotationVelocity -= rotationFriction;
rotationVelocity -= rotationFriction * driftFactor;
if (rotationVelocity < 0) rotationVelocity = 0;
}
else if (rotationVelocity < 0) {
rotationVelocity += rotationFriction;
rotationVelocity += rotationFriction * driftFactor;
if (rotationVelocity > 0) rotationVelocity = 0;
}
}
@@ -289,6 +290,9 @@ void UpdateRover(const std::vector<Plot>& fences) {
}
std::vector<Plot> fences = {
{-550.0f, 3.0f, 50.0f, 1310.0f, 4.0f, 0}, // 0 - pionowo
{ 50.0f, 3.0f, -600.0f, 1200.0f, 4.0f, 1}, // 1 - poziomo