Aislan Silva Costa 0 Denunciar post Postado Outubro 8, 2019 Tenho o seguinte script num controlador python na BGE import serial #Comunicacion Serial import bge #Funciones propias de blender import bpy import math from bpy.props import * from mathutils import Vector ser = serial.Serial('COM5', baudrate = 9600, timeout = 1) leitura = ser.readline() leitura = leitura.decode("utf_8") if leitura[0] == "&" : leitura = leitura[1:] #Eliminamos el detector de errores leitura = leitura[:-1] #Eliminamos el final de linea angulo = math.radians(int(leitura)) cont = bge.logic.getCurrentController() leme = cont.owner rotation = leme.localOrientation.to_euler() rotacao_atual = rotation.y * -1 if (rotacao_atual != angulo): if (rotacao_atual > angulo): leme.applyRotation([0,0.1, 0],1) else: leme.applyRotation([0,-0.1, 0],1) else: leme.applyRotation([0, 0, 0],True) ser.close() Sua função e ler um valor recebido de uma conexao serial, decodifica-lo e depois converter seu valor inteiro em radianos. Leio a rotação atual do meu objeto depois faço a logica para que o objeto rotacione até o angulo desejado. Em termos o codigo funciona, o problema e que aparentemente o objeto não rotaciona de 0 a 360 graus. Exemplo, se meu angulo é de 180 graus, e a rotação atual e 0 graus, o applyRotation fica incrementando de 0.1 radios no objeto mas só até 2.60 radianos, depois desse valor retorna para 0 radianos e vai diminindo, depois sobe até 2.60 de novo e fica num loop infinito, alguém sabe o porque disso? Compartilhar este post Link para o post Compartilhar em outros sites