CONNEXION
  • RetourJeux
    • Tests
    • Soluces
    • Previews
    • Sorties
    • Hit Parade
    • Les + attendus
    • Tous les Jeux
  • RetourActu
    • Culture Geek
    • Astuces
    • Réalité Virtuelle
    • Rétrogaming
    • Toutes les actus
  • RetourHigh-Tech
    • Actus JVTECH
    • Bons plans
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTECH
  • 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
    • Xbox Series
    • Overwatch 2
    • FUT 23
    • League of Legends
    • Genshin Impact
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • PS4
  • One
  • Switch
  • Wii U
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Etoile Abonnement RSS

Sujet : [Blender] Eviter les collisions 'coins'

DébutPage précedente
12
Page suivanteFin
Desura Desura
MP
Niveau 10
24 juillet 2014 à 20:48:42

Hello,
J'aimerais pouvoir éviter ce genre de cas :
http://imgur.com/zbymPRE
Des idées ?

J'ai déjà essayé de remplacer les collisions par d'autres sensors (genre ray ou radars), mais ça me donne beaucoup plus de problèmes.

Merci.

MounchMan MounchMan
MP
Niveau 10
24 juillet 2014 à 21:20:53

Salut, je connais pas Blender mais j'utiliserais pas un moteur physique ou des collisions si complexe juste pour un Tetris :hap: Mais un quadrillage avec des cases "pleines" ou "vides".

Par contre, si c'est autre choses, je sais pas :( Tu veux faire quoi exactement :(

chiagedeluna chiagedeluna
MP
Niveau 10
24 juillet 2014 à 21:47:15

Réduit a peine la taille des blocs. Essayer de casser le système de collision de base ou d'en recomposer un autre est vain, ce serait la solution la plus simple. Visiblement, il considère, a juste titre, que des boites partageant une même coordonnée sur un de leur bord sont en collision, et ça ne sert a rien d'essayer d'aller a l'encontre de ce principe simple et générique.

Desura Desura
MP
Niveau 10
24 juillet 2014 à 22:20:26

MouchMan, j'essaie effectivement de créer un Tetris et quelqu'un sur un forum anglais m'a répondu la même chose que toi :noel:
Mais comme mon niveau en python est pas très avancé, le moteur physique me semble le plus simple. :hap:

Je vais essayer en réduisant la taille des blocs, VDD.

Pseudo supprimé
Niveau 10
24 juillet 2014 à 22:28:51

Des coins arrondis/biseautés si tu ne veux rien changer.

MounchMan MounchMan
MP
Niveau 10
24 juillet 2014 à 22:49:20

Perso, j'ai passé beaucoup de temps avant d'utiliser un moteur physique, justement parce que j'étais pas assez bon :hap:

Mais essaye un truc avec des matrices quand même :ok: Pour savoir si un bloc en (x, y) peut descendre, il suffit de savoir si (x, y-1) est vide.

Si tu débutes, je pense que ça serait plus simple de faire des tetraminos qui descendent "case par case". :ok:

Desura Desura
MP
Niveau 10
24 juillet 2014 à 23:00:47

Justement, mes tetrominoes descendent à intervalles réguliers jusqu'à ce que ça il y ait une collision en fait. :noel:

Et on peut vraiment vérifier si une coordonnée est vide sur Blender ? Sans utiliser les sensors ? :noel:
Parce que les matrices j'ai pas encore vu, c'est sensé être dans mon programme de cours de maths de l'année prochaine en fait :hap:

MounchMan MounchMan
MP
Niveau 10
25 juillet 2014 à 00:17:30

Nan mais quand je dis matrice, je pense à des tableaux dans un tableau :hap: Genre ça :d) http://pastebin.com/1wBBRGjG

Et puis Tetris, on dirait pas comme ça mais c'est pas si évident que ça à faire, un sokoban c'est déjà plus simple :hap:

Desura Desura
MP
Niveau 10
25 juillet 2014 à 00:31:12

Mon but reste quand même de combiner Blender et Python (c'est dans le cadre d'un projet scolaire justement), donc ouais, si je tente avec des tableaux, Blender devra faire office de modélisation du jeu.
Je vais tester ça (car c'est mal barré les collisions ...).

C'est vrai qu'un Sokoban, ça à l'air izzy à faire; je tenterais ça aussi (plus j'ai de matière, mieux c'est). :hap:

MounchMan MounchMan
MP
Niveau 10
25 juillet 2014 à 00:56:43

Mais je vois pas comment tu fais pour associer Blender et Python :( Blender c'est pas sensé être un logiciel de modélisation 3D ?

M'fin, chais pas, avec python en ISN, pour faire des jeux en 2D, moi j'ai utilisé Pygame :hap:

Desura Desura
MP
Niveau 10
25 juillet 2014 à 02:13:35

A la base, mon Tetris est en 3D, c'est juste la caméra que je lui mets qui rend ça en 2D (Le troisième axe tu t'en fiches complètement pour le Tetris).

Blender, c'est en effet un logiciel de modélisation, mais il possède aussi un moteur de jeu appelé le Game Engine et c'est super puissant pour aucune notion de programmation (le Sokoban avec les logics bricks du Game Engine, n'importe qui peut le faire en fait).
Mais justement, que ce soit dans la modélisation ou dans le Game Engine, Python te facilite quand même la vie pour les opérations de masse.

Parce que là, je pensais reproduire un Tetris pour tester mes compétences, car ultimement, mon but c'est de faire mon propre 'petit' jeu en 3D (mais comme j'ai pas d'inspiration pour le moment ...) et c'est vraiment à ce moment-là que Blender me servira.

MounchMan MounchMan
MP
Niveau 10
25 juillet 2014 à 02:37:06

Oh okay, je pensais que tu programmais toi même :hap: Et donc là, je sais pas si ça va te servir s'que je t'ai dis sur les tableaux :hap:

Desura Desura
MP
Niveau 10
25 juillet 2014 à 10:22:27

Le problème avec mon programme, c'est que tous mes blocs descendent de 1 toutes les x secondes, ce qui fait qu'en fait, si je réduis la taille, j'aurais pas de collision.
J'ai essayé de les tronquer, ou d'arrondir les coins, mais ça me donne des trucs étranges aussi : les blocs s'arrêtent pas toujours.
Donc il y a un réel problème au niveau de ma manière de procéder.

C'est le problème qu'a relevé le second. Ce que je pourrais essayer de faire c'est d'éviter le mouvement saccadé et y aller avec la gravité; là, réduire la taille m'aiderait.
Mais après j'ai le problème avec les collisions de côté .. Arg complexe :noel:

Pseudo supprimé
Niveau 10
25 juillet 2014 à 12:01:22

Ah. D'habitude, arrondir les coins résout pas mal de problèmes sur les collisions aux limites.

Il ne te reste donc que le tableau à deux dimensions : lorsqu'une pièce s'arrête, elle remplit les cases correspondantes. Pour savoir si tu peux tomber ou non, il te suffit de regarder toutes les cases situées sous l'élément le plus bas de ta pièce.

Desura Desura
MP
Niveau 10
25 juillet 2014 à 14:37:46

Ouaip, je vais tenter avec les listes; je pense avoir assimilé le concept de parcours d'une liste dans une liste, surtout le fait qu'il faut la parcourir depuis le bas, sinon ça ne joue pas.

Desura Desura
MP
Niveau 10
25 juillet 2014 à 17:37:59

Ouaip c'est bon, les listes marchent impéc' et j'ai intégré ça à une représentation sur Blender.

Le problème, c'est que, pour une raison inconnue, plus j'ai de cubes au sol, plus ça lag.

Desura Desura
MP
Niveau 10
25 juillet 2014 à 17:56:03

Désolé pour le triple post :
Pour faire des rotations, je suis censé faire comment avec des listes dans une liste si ce n'est coder toutes les possibilités :hap: ?

Pseudo supprimé
Niveau 10
25 juillet 2014 à 19:00:17

C'est une possibilité. Tu peux également te poser la question "Comment passer d'une pièce à une pièce tournée ?". Étant donné que tu ne fais que des rotations à 90°, tu devrais trouver une solution élégante.

Pour ton problème de lag, c'est anormal : il y a trop peu d'éléments en jeu pour que ça soit naturel, tu dois probablement créer des listes pour des besoins temporaires et ne jamais les détruire. Ou alors tu parcoures trop ces dernières.

Desura Desura
MP
Niveau 10
25 juillet 2014 à 19:37:47

C'est les questions que je me suis posées en fait.
Mais pour une rotation, il faut un centre de rotation et si je le mets sur une partie de mon tetrominoe ou bien n'importe où, chaque partie bougera différemment. Ce qui fait que finalement, je vais me retrouver à programmer toutes les possibilités.
La rotation à 180° passe encore, car j'ai juste à inverser le tableau et à retourner les coordonnées de mon tetrominoe, mais 90° ...

Sinon, ma liste est jamais détruite, mais c'est vrai que je la parcours constamment (vérifier si je touche pas les bords, vérifier si je touche pas du sol, les inputs et les mouvements, vérifier les coordonnées pour la représentation sur Blender; c'est vrai que ça fait beaucoup, mais c'est un peu obligatoire de tout le temps checker ça nan ?).

Pseudo supprimé
Niveau 10
25 juillet 2014 à 21:17:48

Pour la rotation à 90°, tu peux voir ça comme un changement de repère. Trace une pièce, le zigzag, par exemple, sur un bout de papier quadrillé où tu marqueras l'origine et que tu découperas. Amuse toi à faire des rotations avec et de garde pour un point p la différence entre sa coordonnée initiale et sa version tournée.

Pour les tests de collisions diverses, pourrais-tu publier ton code sur pastebin ou autre ? J'aimerais voir comment tu gères ça, tu as peut-être zappé un truc pas évident pour quelqu'un qui découvre ce genre de structures de données.

DébutPage précedente
12
Page suivanteFin
Répondre
Prévisu
?
Victime de harcèlement en ligne : comment réagir ?
Infos 0 connecté(s)

Gestion du forum

Modérateurs : godrik, LGV
Contacter les modérateurs - Règles du forum

Sujets à ne pas manquer

La vidéo du moment