From 1a85de2c23448acd3d28bc6925237ddb2a3a1932 Mon Sep 17 00:00:00 2001 From: Pc Date: Sun, 19 Jan 2025 00:39:25 +0100 Subject: [PATCH] Dodane Driftowanie --- main.cpp | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/main.cpp b/main.cpp index c22642b..06b66e3 100644 --- a/main.cpp +++ b/main.cpp @@ -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& fences) { } } - // Obracanie + // Obracanie (rotacja z driftowaniem) if (keyAPressed) { rotationVelocity += rotationAcceleration; if (rotationVelocity > maxRotationSpeed) rotationVelocity = maxRotationSpeed; @@ -210,13 +210,14 @@ void UpdateRover(const std::vector& 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& fences) { } + + + std::vector 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