Noticias

Importante: ¡Si quieres publicar tu juego no olvides leer este tema!

* Sponsor

Comunidad Game Maker

Bienvenid@ a la comunidad hispana de Game Maker. Nuestro objetivo es crear videojuegos y dar soporte en castellano de GM. Para mejorar nuestro servicio hemos implantado, como adicion al reglamento general, algunas normas especificas en los subforos más comunes. ¡No olvides informarte antes de participar!.

Autor Tema: Crear objeto 2 en el punto exacto de destruccion  (Leído 1235 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado eams1986

en: Abril 20, 2021, 02:53:17 am
¡Hola! Me gustaría que me ayudaran con un problema con la segunda bola pequeña :(
siempre se crea al lado de la bola grande :(

Lo que quiero es que parezca que sigue la ruta de la bola 1



//STEP event o_player_1 IF COLLIDE WITH BIG BALL1 INSTANCE DESTROY

var id_1 = instance_nearest(x,y,o_ball_rot2)
if place_meeting(x,y,id_1)
    instance_destroy();

//DESTROY EVENT player_1
if !instance_exists(o_player_2)
    instance_create_depth(o_player_1.x,o_player_1.y,-1,o_player_2);

///STEP event - o_player_2
var id_1 = instance_nearest(x,y,o_ball_rot2)
var distance = point_distance(x,y,id_1.x,id_1.y);
owner = id_1;
x = owner.x + lengthdir_x(distance,owner.image_angle);
y = owner.y + lengthdir_y(distance,owner.image_angle);

¡Gracias!


No Tienes Permisos Para Dar Puntos
point 0 Puntos

Este tema no recibió puntos.


Desconectado dixon

Respuesta #1 en: Abril 21, 2021, 08:26:03 am
Hola, gusto en saludarlos.

Pido disculpas por haber creado un post carente de seriedad, resultando molesto y sin sentido, ahora presento la respuesta de manera más clara sin acortadores de url.
En el siguiente está un html5 con la respuesta funcionando, antes estaba acortado pero ya está libre.
Click en la imagen

Bueno, la solución planteada:
El problema del código es que ya está creando un objeto en el punto exacto de colisión y por lo tanto el objetivo no es crearlo en ese punto, el objetivo es que mantenga su órbita según ese punto de creación. Para ello hay que restarle al ángulo (image_angle) de la gran esfera el ángulo que se forma cuando se crea la instancia. Para ello aremos los siguiente:
1.   Agregamos este código al evento créate del o_player_2.
//Evento créate del o_player_2
var id_1 = instance_nearest(x,y,o_ball_rot2);
var direction_factor=point_direction(id_1.x,id_1.y,x,y); direction_factor=id_1.image_angle-direction_factor;

Ya tenemos la direction_factor, que va a ser el ángulo que se obtiene al colisionar, o mejor dicho al crear al o_player_2, luego este ángulo se lo vamos a restar al ángulo que tiene la imagen de la gran sandia. Y eso lo hacemos modificando un poco tu último código, agregándole la direction_factor:

2.   Para el evento step de o_player_2: lo que vamos a hacer es modificar tu ultimo código agregándole la direction_factor.
///STEP event - o_player_2
var id_1 = instance_nearest(x,y,o_ball_rot2)
var distance = point_distance(x,y,id_1.x,id_1.y);
owner = id_1;
x = owner.x + lengthdir_x(distance,owner.image_angle-direction_factor);
y = owner.y + lengthdir_y(distance,owner.image_angle-direction_factor);

Bueno eso es todo: Recuerda que debes crear una copia del proyecto antes de modificarlo, para que no se valla a colgar y me eches la culpa a mí…

Nos vemos.



« Última modificación: Abril 24, 2021, 06:14:13 pm por dixon »

Si Dios quiere; Limpiaré la oficina, puliré el piso y les serviré café a todos, luego, me enseñarán a programar e iré a comprarles más café.