feat: add delta time
This commit is contained in:
		
							
								
								
									
										29
									
								
								src/car.py
									
									
									
									
									
								
							
							
						
						
									
										29
									
								
								src/car.py
									
									
									
									
									
								
							| @@ -7,14 +7,19 @@ from src.utils import segments_intersect | ||||
| from src.vec import Vec | ||||
|  | ||||
|  | ||||
| sign = lambda x: 0 if x == 0 else (-1 if x < 0 else 1) | ||||
|  | ||||
|  | ||||
| class Car: | ||||
|     MAX_SPEED = 0.05 | ||||
|     MAX_BACK_SPEED = -0.025 | ||||
|     ROTATE_SPEED = radians(1) | ||||
|     MAX_SPEED = 5 | ||||
|     MAX_BACK_SPEED = -2 | ||||
|     ROTATE_SPEED = 1 | ||||
|     COLOR = (230, 150, 80) | ||||
|     WIDTH = 0.4 | ||||
|     LENGTH = 0.6 | ||||
|     COLLISION_MARGIN = 0.4 | ||||
|     ACCELERATION = 2 | ||||
|     FRICTION = 3 | ||||
|  | ||||
|     def __init__(self, pos: Vec, direction: Vec) -> None: | ||||
|         self.pos: Vec = pos | ||||
| @@ -26,20 +31,20 @@ class Car: | ||||
|         self.right: bool = False | ||||
|         self.colliding: bool = False | ||||
|  | ||||
|     def update(self): | ||||
|     def update(self, dt: float): | ||||
|         if self.forward: | ||||
|             self.speed += 0.001 | ||||
|             self.speed += self.ACCELERATION * dt | ||||
|             self.speed = min(self.MAX_SPEED, self.speed) | ||||
|  | ||||
|         if self.backward: | ||||
|             self.speed -= 0.002 | ||||
|             self.speed -= self.ACCELERATION * 2 * dt | ||||
|             self.speed = max(self.MAX_BACK_SPEED, self.speed) | ||||
|  | ||||
|         rotate_angle: float = 0 | ||||
|         if self.left: | ||||
|             rotate_angle -= self.ROTATE_SPEED | ||||
|             rotate_angle -= self.ROTATE_SPEED * dt | ||||
|         if self.right: | ||||
|             rotate_angle += self.ROTATE_SPEED | ||||
|             rotate_angle += self.ROTATE_SPEED * dt | ||||
|  | ||||
|         # if self.backward: | ||||
|         #    rotate_angle *= -1 | ||||
| @@ -47,11 +52,13 @@ class Car: | ||||
|         if rotate_angle != 0: | ||||
|             self.direction = self.direction.rotate(rotate_angle) | ||||
|  | ||||
|         self.speed *= 0.98 | ||||
|         if abs(self.speed) < 1e-8: | ||||
|         if not self.forward and not self.backward: | ||||
|             self.speed -= sign(self.speed) * self.FRICTION * dt | ||||
|  | ||||
|         if abs(self.speed) < 1e-4: | ||||
|             self.speed = 0 | ||||
|  | ||||
|         self.pos += self.direction * self.speed | ||||
|         self.pos += self.direction * self.speed * dt | ||||
|  | ||||
|     def render(self, surf: pygame.Surface, camera: Camera): | ||||
|         pts: list[Vec] = self.get_corners() | ||||
|   | ||||
		Reference in New Issue
	
	Block a user