Crear figura física vía código

¿Hay alguna manera de crear una figura física en vivo, via código, y no a través del panel de las propiedades de la interfaz?
Me explico. Cojamos el ejemplo “click” de Pilas, en el que al hacer click en la pantalla se crea un actor Pelota. SI cambiamos

let actor = this.pilas.actores.pelota();

por

let actor = this.pilas.actores.aceituna();

se crea un actor aceituna, en su lugar, por supuesto. Como es lógico, la aceituna se queda quieta en pantalla, no como la pelota, que de partida tiene figura física y cae y rebota sobre la plataforma.
La cuestión es… ¿puedo, tras esa línea, modificar con código la aceituna para que tenga forma física y caiga y rebote como la pelota? He probado un par de cosas pero no funcionan.

1 Like

Me parece que no, las figuras físicas no se pueden modificar vía código.
Pero si puedes crear tu el actor con nombre aceituna, configurarlo desde el editor y desactivarlo. Luego haces:

let aceituna = this.pilas.clonar("aceituna");
aceituna.x = ...
aceituna.y = ...

Donde X Y es la posición en la que quieres clonarlo.
Digamos que this.pilas.actores clona actores por defecto de Pilas (los que puedes crear con el botón crear actor).
Mientras que this.pilas.clonar(“nombre”) permite clonar actores que tú mismo. Incluso puedes clonar actores que estén en otra escena.

Hola @fsalamero !!!, hay varias formas de crear la funcionalidad que te gustaría hacer, pero lamentablemente una vez que creas el actor (con la linea let actor = this.pilas.actores.aceituna()) no se le puede “asignar” una figura dinámicamente.

Sin embargo hay otras formas de hacerlo, te las comento a ver si te resultan útiles.

1 - Crear un actor de molde y clonarlo

Una forma es crear el actor con el editor, y luego en el código escribir “pilas.clonar_en”:

Abrir este proyecto en el editor de pilas

2 - Crear el actor desde el código especificando las propiedades

Esta es la forma más compleja, pero es lo que hace el editor internamete con las propiedades del editor. La idea consiste en crear una clase y luego indicarle a pilas que use esa clase como “fábrica” del actor:

Abrir este proyecto en el editor de pilas

3 - Usar el actor pelota pero cambiarle la apariencia

Esta es otra forma que se me ocurrió, partiendo del actor pelota y cambiando su imagen:

Abrir este proyecto en el editor de pilas

Me gustaría ver si puedo implementar una forma de asignar la figura física, pero tendría que ver cómo, esto es algo que nos impone phaser, que es la biblioteca gráfica que usamos en pilas, pero creo que se podría hacer de alguna forma.

¿nos contarías un poco más sobre lo que estás armando @fsalamero?, tal vez eso me de una idea de cómo hacerlo.

Abrazo!!!

Gracias, @hugoruscitti ! estoy trabajando con chavales y proporcionándoles pequeños retos, dentro de la clase de matemáticas, para trabajar el pensamiento computacional. La idea, sobre todo, es no centrarse en un lenguaje si no en el proceso de resolver problemas, acudiendo a las características del lenguaje cuando se necesitan. La experiencia también la voy contando a docentes, en cursos de formación.
En el caso del ejemplo en el que estamos, la imposibilidad de hacerlo de manera directa, daba pie a reflexionar sobre ello y ver la iniciativa de “`puentear al jefe”, engañándolo como dices en el método 3, que es usar la pelota y disfrazarla de aceituna. A los chavales se les suele ocurrir eso, no son vivos ni nada…