CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

[Java] Hitbox: Qu'ai-je fais faux

VivaFidel
VivaFidel
Niveau 10
18 juillet 2012 à 20:20:41

Bonjour, voila mon problème je n arrive pas a faire une simple hitbox carrée:

CODE:
if(ay >= ey && ay <= ey + enemy.getTextureHeight()/2 || ay <= ey && ay >= ey - enemy.getTextureHeight()/2){
if(ax >= ex && ax <= ex + enemy.getTextureWidth()/2 || ax <= ex && ax >= ex - enemy.getTextureWidth()/2){
System.out.println("t");
}

ay et ax sont les coordonnées du projectile

ey et ex sont les coordonnées de l'enemi

caelacanthe
caelacanthe
Niveau 10
18 juillet 2012 à 20:34:09

là, tu testes deux demi-hitbox à chaque fois, pas sûr que ce soit la bonne technique... :hap:

je mettrais plutôt:

if(ay>= ey+enemy.getTextureHeight()/2 && ay<= ey-ennemy.getTextureHeight()/2)
{
//même truc avec des X a la place des Y
}

et si ça marche pas, j'inverserai les + et les - car j'ai aucune idée de la manière dont tes axes sont orientés. :hap:

et je vérifierai déja que enemy.getTextureHeight() et enemy.getTextureWidth() renvoient des valeurs cohérentes, et je les précalculerai avant le test pour ne pas faire deux récupérations et divisions mais en java, ce genre de petites attentions représentent certainement une goutte d'eau insignifiante. :oui:

Caudheur
Caudheur
Niveau 8
18 juillet 2012 à 21:10:21

"mais en java, ce genre de petites attentions représentent certainement une goutte d'eau insignifiante. :oui: "

Parce que le langage est déjà suffisamment lent ? :hap:

Sinon, si les projectiles sont très rapides, il faudra surement faire de la prédiction de mouvement pour donner l'illusion d'une collision immédiate.

Paulop
Paulop
Niveau 12
18 juillet 2012 à 21:11:25

Pour calculer une collision entre deux boite alignées sur les axes c'est simple.

Prenons deux boites, box et otherbox.

return
( box.left <= otherbox.rigth ) &&
( box.top <= otherbox.bottom ) &&
( box.right >= otherbox.left ) &&
( box.bottom >= otherbox.top );

Retournera true si les deux box collisionnent et false sinon.

VivaFidel
VivaFidel
Niveau 10
18 juillet 2012 à 23:59:25

comment tu crée l'objet box ?

caelacanthe
caelacanthe
Niveau 10
19 juillet 2012 à 01:41:55

"Enfin ça marche pour l'action script 3 :hap: "

:d) enfin, ça reste tout pourri :hap:

le mieux, c'est les "tests d'intersection". :oui:

Sous forums
  • Aide à l'achat Mac
  • Création de Jeux
  • Linux
  • Programmation
  • Création de sites web
  • Internet
  • Steam Deck
  • Macintosh
  • Hardware
La vidéo du moment