Постепенно вращая одну точку к другой - PullRequest
0 голосов
/ 29 мая 2019

Учитывая две позиции (self.position и target.position), а также текущее вращение (self.rotation) и скорость вращения (self.rotation_speed), я хочу наклонить self к target каждому тику.После обновления угла ускорение применяется к скорости, а затем позиция перемещается в своем текущем направлении (self.rotation).

Следующий код работает почти идеально.Однако, если целью является «источник», то вращение начинает идти в противоположном направлении, чем если бы self движется по часовой стрелке через квадрант 4 или против часовой стрелки через квадрант 1.

def _update_angle(self):
    while self.rotation < -math.pi:
        self.rotation += math.pi * 2
    while self.rotation > math.pi:
        self.rotation -= math.pi * 2
    angle_delta_x = self.target.position[0] - self.position[0]
    angle_delta_y = self.target.position[1] - self.position[1]
    angle = -math.atan2(angle_delta_y, angle_delta_x)

    if angle < self.rotation:
        self.rotation -= self.rotation_speed
    elif angle > self.rotation:
        self.rotation += self.rotation_speed
...