Buenos días, estoy tratando de hacer un eternal runnig pero tengo un problema con uno de los obstaculos
este obstaculo es un objeto circulo (barril) que aparece y se mueve de derecha a izquierda del room y que tiene que girar y rebotar al mismo tiempo, el problema es que no puedo hacer que colisione correctamente con el objeto solido cuando uso la funcion image_angle en mi código para hacerlo girar. Espero alguien pueda ayudarme :(. Aquí esta mi codigo.
//Create event
coll = 4;
grav = 1.5;
vspd = 0;
hspd = 6;
spd = 1;
//Step event
image_angle += spd ;
if(!place_meeting(x,y+1,obj_solid)){
vspd += grav;
}
else{
vspd = 0;
if(coll == 3){
vspd = -20;
}
if(coll == 2){
vspd = -10;
}
if(coll == 1){
vspd = -5;
}
if(coll == 0){
vspd = 0;
//spd = 8;
}
coll -=1 ;
}
//Vertical collision
if(place_meeting(x, y+vspd, obj_solid)){
while(!place_meeting(x,y+sign(vspd),obj_solid)){
y+=sign(vspd);
}
vspd=0;
}
y += vspd; // move the objet
x -= hspd;
¿Qué quieres decir con que "colisione correctamente"? Tienes que describir con detalle cuál es el problema.
¿"spd" viene a ser la variable speed?
Con direction=0, si le das un valor z a speed es como si hicieses hspeed=z vspeed=0
Si quieres que un objeto colisione del mismo modo independientemente de su image_angle, mejor no alteres realmente su image_angle.
Mejor crea una variable "angulo" y pon esto en el evento draw:
draw_sprite_ext(sprite_index,image_index,x,y,1,1,angulo,c_white,1)
Muchas gracias. No sería más recomendable de alguna manera poner la funcion draw_sprite_ext(sprite_index,image_index,x,y,1,1,angulo,c_white,1) en un Step event???????
ya que el objeto va girar constantemente hasta que salga del room y no solamente alterar el angulo original del sprite..
muchas gracias deverdad necesito ayuda.
Cita de: cesar561 en Agosto 30, 2015, 09:31:30 PM
Muchas gracias. No sería más recomendable de alguna manera poner la funcion draw_sprite_ext(sprite_index,image_index,x,y,1,1,angulo,c_white,1) en un Step event???????
ya que el objeto va girar constantemente hasta que salga del room y no solamente alterar el angulo original del sprite..
muchas gracias deverdad necesito ayuda.
No puedes poner funciones de "dibujo" en eventos que no sean "draw" aunque si que puedes poner eventos que no son de dibujo en el evento draw. ¡El código que te di no funcionaria en el evento step!
Ok muchas gracias
entonces sería algo como esto???
//Create event
angulo = 360; // Quiere que este girando 360 grados constantemente o que valor le puedo dar????
//Draw event
draw_sprite_ext(sprite_index,image_index,x,y,1,1,angulo,c_white,1);
El angulo tiene que ser un valor mayor o igual que 0 y menor que 360 (se admiten decimales. Ej: 359.99).
Lo ideal es que lo inicies a 0 por ello.
No me funciona, solamente esta alterando el angulo original del sprite, necesito que el objeto
se vea girando constantemente hasta que salga del room :-X
Prueba este código en el evento step:
angulo++
if(angulo==360) angulo=0
listo amigo funciono!!! de esta manera
//Create
angulo = 0;
//Step
angulo += 6;
if(angulo == 360){
angulo=0;
}
//Draw
draw_sprite_ext(sprite_index,image_index,x,y,1,1,angulo,c_white,1);
muchas graciass por tu ayuda amigo!! :) :)