News:

SMF - Just Installed!

Main Menu

Script Code Editor girar objeto

Started by Alvaro_ATOX, June 25, 2025, 06:31:56 PM

Previous topic - Next topic

Alvaro_ATOX

Hola a todos, estoy buscando algún ejemplo en Script Code Editor para aplicar un giro continuo a una caja.

Lo quiero para hacer que las cajas giren cuando pasen por una cinta en curva. Ahora solo se trasladan, no giran. Cuando son rodillos giran y se trasladan, pero en cinta no.

Gracias de antemano.

EasyPLC_Master

Puedes usar la función OrbitTo(Vector3 pos,float sp) del componente WorkPart.
Por ejemplo si usas un plano usando la función  List<WorkPartLogic> WorkPartCollisionList te devolverá una lista de todos los componentes WorkParts que se encuentran en el plano.
Puedes orbitar los WP respecto a un punto de origen para simular el giro de la cinta.

Alvaro_ATOX

Hola, gracias por la respuesta.
Creo que mi problema es anterior, adjunto el código con los intentos anteriores comentados para que veas por dónde he ido:

int i = 0;

Vector3 a, b;

public void Init()
{
 //a = new Vector3();
}

public void Main()
{
a = new Vector3 (0, i, 0);
b = new Vector3 (-12, 0, 26);
i++;

//WorkPart25.ApplyMovement(true, 15.0f, true, false);
//WorkPart25.OrbitTo(Cam104.transform.position, 15.0f);
//WorkPart25.OrbitTo(b, 15.0f);
}

public void Physics()
{
//WorkPart25.MoveRotation(a * 10);
//WorkPart24.MoveRotation(a * 10);
WorkPart25.OrbitTo(b, 15.0f);
}

public void Finish()
{
 
}



Alvaro_ATOX

Hola, sigo sin ser capaz de acceder al WorkPart y hacerlo girar. En el transportador de banda que estoy simulando en Init() arranco todos los caminos, el workpartCreator, el destructor, pero ni en Main() ni en Physics() soy capaz de modificar el estado de movimiento de la caja. Necesito el código para trabajar a partir de ahí. Adjunto el código que tengo hasta ahora, arranca los caminos pero no hace nada más.

Sabéis si hay algún ejemplo de código en el que se modifique el movimiento de un objeto?

Gracias


int i = 0;
Vector3 pos;
Vector3 a, b;

public void Init()
{
 //a = new Vector3();
 WorkPart25.WorkPartType = 2;
 
 Cam101.Advance(true);
 Cam102.Advance(true);
 Cam103.Advance(true);
 Cam104.Reverse(true);
 Cam105.Advance(true);
 Cam106.Reverse(true);
 Cam107.Advance(true);
 Cam108.Advance(true);
 Cam109.Advance(true);
 Cam110.Advance(true);

IOManager.SetInput(24, true);

//WorkPart25.transform.IKEnable(false);
}

public void Main()
{
    a = new Vector3 (0, i, 0);
    b = new Vector3 (-12, 0, 26);
    i++;
   
    //WorkPart25.ApplyMovement(true, 15.0f, true, false);
    //WorkPart25.OrbitTo(Cam104.transform.position, 15.0f);
    //WorkPart25.OrbitTo(b, 15.0f);//// DIGITAL OUTPUTS ////
    WorkPartCreator22.CreateByTime(2, 4);
    //pos = WorkPart25.CurrentPosition();
    //pos = WorkPart25.transform.position;
    //WorkPart25.transform.Rotate(2, i, 10, 0);
   
    //EditorUtils.ShowText(pos.ToString());
   
}

public void Physics()
{
    //WorkPart25.MoveRotation(a * 10);
    //WorkPart24.MoveRotation(a * 10);
        //WorkPart25.OrbitTo(b, 15.0f);
        WorkPart25.transform.Rotate(2, -i * 10, 10, 0);
        pos = WorkPart25.transform.position;
        EditorUtils.ShowText(pos.ToString());
}

public void Finish()
{
 
}


EasyPLC_Master