Как заставить двигаться стрелку по z в ursina?

Я пытаюсь сделать "эдитор" для ursina engine. Когда я начал делать стрелки scale мне понадобился класс Draggable, вот код который я написал:

class DragCube(Draggable): def init(self, scene, Color=color.green, Visible=True, Scale=(1, 0.25, 0.25), Position=Vec3(0, 0, 0), Collider='box', Lock=(1, 0, 0)):

    super().__init__(
    color = Color,
    visible = Visible,
    model = 'cube',
    parent = scene,
    scale = Scale,
    position = Position,
    lock = Lock
    )

class scaleRows(): def init(self, scene): self.rows = [] self.scene = scene

def calculate_scale(self):
    scale = ()

    for i in rannge(3):
        position = self.entity.position[i]
        scale = self.entity.scale[i]
        scaleCenter = scale / 2
        offset = position + scaleCenter

        row = self.rows[i]
        rowPosition = row.position[i]
        scalePlus = rowPosition - offset

        scale.append(scalePlus)

    return scale

def update(self):
    if self.rows == []:
        rowX = DragCube(self.scene, Position = self.entity.position + Vec3(1, 0, 0),
                        Lock = (0, 1, 0), Scale=(1, 0.25, 0.25))
        self.rows.append(rowX)
        rowY = DragCube(self.scene, Position = self.entity.position + Vec3(0, 1, 0),
                        Lock = (1, 0, 0), Scale=(0.25, 1, 0.25))
        self.rows.append(rowY)
        rowZ = DragCube(self.scene, Position = self.entity.position + Vec3(0, 0, 1),
                        Lock = (0, 0, 0), Scale=(0.25, 0.25, 1))
        self.rows.append(rowZ)

класс scaleRows - скрипт, но когда я начил делать стрелку по направлению z, я столкнулся с проблемой: параметр Lock реагирует только на первые два значения, как я понял, класс Draggable можно использовать только в 2d.

Есть ли какие-то альтернативы но в 3d? Возможно уже есть редакторы 3д объектов в сети?

Буду рад вашим ответам!


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

Автор решения: Mixadyt

Я очень долго искал в сети ответ на этот вопрос, но ответ на него мне попался только сейчас.

Вот ссылка на англоязычную версию с ответом: https://stackoverflow.com/questions/74942884/how-to-drag-object-by-z-axis-in-python-ursina-engine-module

Надо было просто поменять plane_direction на (0,1,0).

→ Ссылка