glcraft Utilisateur confirmé: Rang *****
Messages : 1698 Localisation : Entre l'Espagne, l'Italie, la Suisse, L'allemagne et le RU :P Projet Actuel : Jeu de survie avancé
||--------
| Sujet: systeme de collision [enfin résolu, probleme de cosinus] Mer 20 Jan 2010 - 19:54 | |
| je voudrai faire un systeme de collision, mais j'y arrive pas je voudrai une (ou plutôt deux) fonction qui retourne pour vspeed et hspeed j'ai essayé - Citation :
with (collision_line(x1,y1,x2,y2,disk,1,1)) { vspeed*=sin(dirmur) hspeed*=cos(dirmur) } où dirmur est la direction entre deux point, qui forme un mur entre les deux et disk est l'objet en action. je demande ca car je ne peux pas utiliser les objet murs dans ce cas là, donc je ne peux pas utiliser la fonction move_bounds_all. edit : j'ai trouvé ceci : - Citation :
- raddir=degtorad(point_direction(global.x1,global.y1,global.x2,global.y2))
degdir=point_direction(global.x1,global.y1,global.x2,global.y2)
if sin(raddir)!=0 hspeed=hspeed*sin(raddir)*(-sign(sin(raddir)))
if cos(degdir)!=0 vspeed=vspeed*cos(degdir)*(-sign(cos(degdir))) c'est améliorer mais c'est toujours pas ca... edit 2 : c'est bon c'est resolu, mais je ne comprend pas pourquoi le cos de degtorad(270) (pour GM) ne fait pas 0, pour lui c'est 0.00001 (un truc du style...) n'empeche, j'ai remplacé ca : - Citation :
- if cos(degdir)!=0
vspeed=vspeed*cos(degdir)*(-sign(cos(degdir))) [/quote] par ca - Citation :
- if cos(raddir)>=0.0001 || cos(raddir)<=-0.0001
vspeed=vspeed*cos(raddir)*(-sign(cos(raddir))) maintenant ca fonctionne |
|