как сделать "вытягивающуюся" платформу, как панельки серии игр "portal"

мне необходимо понять как можно реализовать свободно вытягиваемую платформу. Под словом "свободно" я имею в виду, что она может менять градус наклона любой её части как угодно и выглядело хорошо.

мне нужно, чтобы программа рассчитывала место куда вытягивать(чёрная точка), относительно центра платформы(красная точка) введите сюда описание изображения Вот что я имел в виду как в portal'е

как мне можно это сделать? я использую python+pygame или godot engine, поэтому вы можете ответь на питоне или на godot.


Ответы (1 шт):

Автор решения: Danis
import pygame
import math

pygame.init()
win = pygame.display.set_mode((720, 720))

def ray(x, y, angle, size):
    x += math.sin(angle) * size
    y += math.cos(angle) * size
    return x, y

class Platform():
    def __init__(self, x, y, height):
        self.size0 = height / 3
        self.pos = [x, y]
        
        self.size1 = height / 3 * 2
        self.angle = math.pi / 2
        
    def draw(self, win):
        x0, y0 = ray(*self.pos, self.angle, self.size0)
        x1, y1 = ray(x0, y0, -self.angle, self.size1)
        pygame.draw.line(win, (255, 255, 255), self.pos, (x0, y0))
        pygame.draw.line(win, (255, 255, 255),(x0, y0), (x1, y1))
        
platform = Platform(360, 720, 720)
while True:
    win.fill((0, 0, 0))
    platform.draw(win)
    platform.angle += .01
    pygame.display.update() 
→ Ссылка