Ir para conteúdo
Aislan Silva Costa

Rotacionar objeto na Blender Game Engine

Recommended Posts

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

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.