Bonjour,
Petit problème avec l'image
Sauf erreur de ma part, il faut creer l'objet en statique, lui affecter un tag spécifique (que tu determine).
Puis filtrer la collision dans le collide callback.
Voici ce que ca donner avec un voiture qui va passer au travers de la première boite et "taper" dans la deuxième.
Code:
/*
Raydium - CQFD Corp.
http://raydium.org/
Released under both BSD license and Lesser GPL library license.
See "license.txt" file.
*/
#include "raydium/index.c"
#define NO_COLLIDE 1
#define COLLIDE 0
int sound_boom;
char collide(int e1, int e2, dContact *n)
{
if(raydium_ode_element_tag_get(e1)==NO_COLLIDE || raydium_ode_element_tag_get(e2)==NO_COLLIDE){
if (!raydium_sound_IsPlaying(sound_boom)) raydium_sound_SourcePlay(sound_boom);
return 0;
}
return 1;
}
void create_car(void){
// A recuperer de explo.c par exemple.
}
void display(void){
float speed,direct;
raydium_joy_key_emul();
direct=raydium_joy_x*0.3;
speed=raydium_joy_y*55;
raydium_ode_motor_speed_name("moteur",-speed);
raydium_ode_motor_angle_name("direction",direct);
if(raydium_key_last==1027) exit(0);
raydium_clear_frame();
raydium_ode_element_camera_inboard_name("corps",-1,0.3,0.5,2,0,0);
raydium_ode_draw_all(0);
raydium_rendering_finish();
}
int main(int argc, char **argv)
{
// Debut de explo.c par exemple
...
sound_boom=raydium_sound_LoadWav("explosion1.wav");
raydium_sound_SetSourceLoop(sound_boom,0);
raydium_ode_ground_set_name("cocorobix.tri");
create_car();
raydium_ode_object_box_add("Box",raydium_ode_object_find("GLOBAL"),1,RAYDIUM_ODE_AUTODETECT,0,0,RAYDIUM_ODE_STATIC,NO_COLLIDE,"crate.tri");
raydium_ode_element_move_name_3f("Box",1,1,-0.9);
raydium_sound_SetSourcePos(sound_boom,(dReal[]) {1,1,-0.9});
raydium_ode_object_box_add("NBox",raydium_ode_object_find("GLOBAL"),1,RAYDIUM_ODE_AUTODETECT,0,0,RAYDIUM_ODE_STATIC,COLLIDE,"crate.tri");
raydium_ode_element_move_name_3f("NBox",3,1,-0.9);
raydium_ode_CollideCallback=collide;
raydium_callback(&display);
return 0;
}
J'espère que cela t'aidera.
Bonne journée
Ouille.