User Tag List

Resultados 1 al 8 de 8

Tema: Enesima duda sobre colisiones gravedades y ****** en vinagre...

  1. #1

    Fecha de ingreso
    Jan 2005
    Ubicación
    Esquina inferior derecha(almeria)
    Mensajes
    798
    Mencionado
    1 Post(s)
    Tagged
    0 Tema(s)
    Agradecer Thanks Given 
    0
    Agradecer Thanks Received 
    0
    Thanked in
    Agradecido 0 veces en [ARG:2 UNDEFINED] posts

    Enesima duda sobre colisiones gravedades y ****** en vinagre...

    Código:
    Process main()
    
    begin
     
    set_mode(320,240,16);
    load_fpg("graficos1.fpg");
    put_screen(0,1);
    prota();
    
    	loop
    		frame;
    		if key(_esc):break;end
    	end	
    	
    let_me_alone();
    
    end
    
    Process prota();
    
    private 
    
    int gravedad;
    int contgravedad;
    int pixeld;
    int pixeld2;
    int pixeld3;
    int pixell;
    int pixelr;
    int redd,greend,blued;
    int redd2,greend2,blued2;
    int redd3,greend3,blued3;
    int redl,greenl,bluel;
    int redr,greenr,bluer;
    int saltando;
    
    begin
    	
    	graph=2;
    	x=160;
    	y=120;
    	write_var(0,10,10,0,gravedad);
    	write_var(0,10,20,0,redd);
    	write_var(0,10,30,0,redd2);
    	write_var(0,10,40,0,redd3);
    	write_var(0,10,50,0,contgravedad);
    	write_var(0,10,60,0,saltando);
    	write_var(0,300,10,0,x);
    	write_var(0,300,20,0,y);
    	
    	loop
    		if(key(_space))x=160;y=120;end
    		if(redd>240 && greend>240 && blued>240) x=160;y=120;end
    		//Gravedad
    		y-=gravedad;
    		pixeld=map_get_pixel(0,1,x,y+19);
    		get_rgb(pixeld,&redd,&greend,&blued);
    		pixeld2=map_get_pixel(0,1,x+19,y+19);
    		get_rgb(pixeld2,&redd2,&greend2,&blued2);
    		pixeld3=map_get_pixel(0,1,x-19,y+19);
    		get_rgb(pixeld3,&redd3,&greend3,&blued3);
    		if(redd<240 && redd2<240 && redd3<240) ;gravedad=-4 ; else gravedad=0;saltando=0; end
    		//Movimiento
    		pixell=map_get_pixel(0,1,x-19,y);
    		get_rgb(pixell,&redl,&greenl,&bluel);
    		pixelr=map_get_pixel(0,1,x+19,y);
    		get_rgb(pixelr,&redr,&greenr,&bluer);
    		IF (key(_right) && (redr<240||redd2<240))x=x;else x -= 4 ; END
            IF (key(_left) && (redl<240||redd3<240))x=x;else x += 4 ; END
            IF (key(_down))  y += 4 ; END
            IF (key(_up))  gravedad=0;  y -= 4 ; END
    		//salto
    		contgravedad--;
    		if(contgravedad<0)contgravedad=0;end
    		if(key(_control) && contgravedad==0 && (redd>240 || redd2>240 ||redd3>240 )) contgravedad=10;saltando=1;end
    		if(contgravedad<>0)y-=4;gravedad=0;end
    		
    		frame;
    	end
    
    end
    El problema que tengo se puede ver en este video...

    [media]http://www.youtube.com/watch?v=BEXA73qWbds[/media]

    El problema es que a pesar de definir 5 puntos de colision en el cubo de los huevos , sigue atravesando las plataformas si uno se pone tiquismiquis... ¿Alguna idea?

  2. #2

    Fecha de ingreso
    Aug 2003
    Ubicación
    Madrid (Getafe)
    Mensajes
    13,932
    Mencionado
    48 Post(s)
    Tagged
    0 Tema(s)
    Agradecer Thanks Given 
    5
    Agradecer Thanks Received 
    221
    Thanked in
    Agradecido 164 veces en [ARG:2 UNDEFINED] posts
    Entradas de blog
    2
    y en lugar de tener tantos puntos de colision porque no haces una colision de sprites normal, vamos la que te mira si algun pixel de los dos sprites se solapa. la verdad es que nunca he necesitado definir un punto de colision, cuando menos 5.

    Aiken
    < - >
    es decir defines las plataformas como sprites, y compruebas que no hay choque de sprites.
    Última edición por Aiken; 15/02/2011 a las 20:31 Razón: Edición automática anti doble-post.

  3. #3

    Fecha de ingreso
    Jan 2005
    Ubicación
    Esquina inferior derecha(almeria)
    Mensajes
    798
    Mencionado
    1 Post(s)
    Tagged
    0 Tema(s)
    Agradecer Thanks Given 
    0
    Agradecer Thanks Received 
    0
    Thanked in
    Agradecido 0 veces en [ARG:2 UNDEFINED] posts
    Lo que comentas es la ultima alternativa que tengo xD ya que al menos a mi me resulta mas sencillo dibujar el mapa entero y luego sencillamente hacer un mapa de durezas que circule por debajo...

  4. #4

    Fecha de ingreso
    Jul 2009
    Mensajes
    8,562
    Mencionado
    57 Post(s)
    Tagged
    0 Tema(s)
    Agradecer Thanks Given 
    785
    Agradecer Thanks Received 
    406
    Thanked in
    Agradecido 286 veces en [ARG:2 UNDEFINED] posts
    es mas que evidente que no puedes usar ese tipo de colision para lo que haces, puesto que no tienes puntos de colision en todo el cubo y logicamente va a traspasar...

  5. #5

    Fecha de ingreso
    Jan 2005
    Ubicación
    Esquina inferior derecha(almeria)
    Mensajes
    798
    Mencionado
    1 Post(s)
    Tagged
    0 Tema(s)
    Agradecer Thanks Given 
    0
    Agradecer Thanks Received 
    0
    Thanked in
    Agradecido 0 veces en [ARG:2 UNDEFINED] posts
    En teoria es un cuadrado todos los puntos de cada uno de los lados llegan a la vez a colisionar con las plataformas del video... pero bueno , hare lo que decis...

  6. #6

    Fecha de ingreso
    Jul 2009
    Mensajes
    8,562
    Mencionado
    57 Post(s)
    Tagged
    0 Tema(s)
    Agradecer Thanks Given 
    785
    Agradecer Thanks Received 
    406
    Thanked in
    Agradecido 286 veces en [ARG:2 UNDEFINED] posts
    varios tips...

    1) load_fpg devuelve un identificador... ese identificador es el file cargado.

    2) nunca asumas cosas ni valores, es un grave error de programacion hacerlo, por ejemplo, no asumas que en el file 0, estara el grafico 1.

    esto esta mal

    load_fpg("graficos1.fpg");
    put_screen(0,1);


    lo correcto es

    file = load_fpg("graficos1.fpg");
    put_screen(file,1);


    por otro lado, no es como dices, la plataforma no tiene los puntos de colision, sino el prota, por eso, solo estas comprobando en x+/-19,y+/-19, lo cual deja sin efecto, x,y o x+9 o x-9, x=8, y-3, y+5, etc.

    y ese es el problema... cuando choca en medio del grafico, que en realidad no choca.

  7. #7

    Fecha de ingreso
    Jan 2005
    Ubicación
    Esquina inferior derecha(almeria)
    Mensajes
    798
    Mencionado
    1 Post(s)
    Tagged
    0 Tema(s)
    Agradecer Thanks Given 
    0
    Agradecer Thanks Received 
    0
    Thanked in
    Agradecido 0 veces en [ARG:2 UNDEFINED] posts
    Lo del load_fpg... si tienes razon es un mal vicio que arrastro desde fenix,

    Gracias por los consejos...

  8. #8
    futublog Guest
    no me voy a jartarme de repasarte el codigo, pero asin por lo pronto y haciendolo mal, tambien puedes poner una plataforma mas ancha y que colisione en una z inferior al dibujo anterior, no se si me explico bien o no me entiendo

    el caso es que quiero darte animos ya que ayer y hoy me he estado peleando tambien con un ''plataformas'' entrecomillado que estoy haciendo con colisiones, je je

Permisos de publicación

  • No puedes crear nuevos temas
  • No puedes responder temas
  • No puedes subir archivos adjuntos
  • No puedes editar tus mensajes
  •