Je sais qu'il y a des gens qui créent des classes pour cela (par exemple, http://coreyoneil.com/portfolio/index.php?project=5). Mais je veux apprendre à le faire moi-même pour pouvoir créer tout ce dont j'ai besoin.ActionScript 3 pixels collision parfaite. Comment? (à des fins d'apprentissage)
J'ai lu à propos de BitMap et BitMapData. Je devrais être capable de retirer les MovieClips sur une BitMap pour pouvoir ensuite faire défiler les pixels à la recherche des collisions. Cependant, il est bizarre et confus de traiter les décalages .. Et il semble que le MyBitMap.rect a toujours x = 0 et y = 0 ... et je ne peux pas couper pour trouver la position d'origine des choses ...
Je pense d'abord faire un hitTestObject, puis si c'était positif, j'explorerais l'intersection entre les rectangles movieclips pour les collisions de pixels. Mais il y a aussi un autre problème (la rotation des clips vidéo) ...
... J'ai besoin d'un peu d'éclairage ici sur la façon de le faire. S'il vous plaît, toute aide serait appréciée ..
Je ne veux pas simplement tester si elles entrent en collision. Je veux apprendre à le faire manuellement, parce que je vais devoir trouver des informations comme l'angle de collision qui n'est pas retourné par la fonction que vous avez mentionnée, pour autant que je sache. mais .. dans votre code, parlez-vous de changer l'emplacement de tous les pixels dans le bitmap en utilisant une matrice de rotation? est-ce que c'est ça? – jmacedo
L'angle de collision? Pourriez-vous élaborer (c'est-à-dire la normale à la tangente de l'endroit où ils sont entrés en collision). La façon de le faire manuellement est de faire défiler chaque pixel d'un bitmap et de voir s'il touche le pixel d'un autre bitmap. Ensuite, si un pixel touche un autre pixel de l'autre, les bitmaps se chevauchent quelque part. Maintenant vous devriez utiliser une heuristique pour limiter les pixels que vous testez parce que cette méthode est extrêmement, extrêmement inefficace. – Mahir
La transformation de coordonnées a été donnée dans le cas où votre image bitmap est tournée. Ex: Votre bmd est un carré de 20x20 pixels avec son coin supérieur gauche situé à (0,0). Vous le faites pivoter de 45 degrés dans le sens des aiguilles d'une montre pour en faire un diamant (encore une fois le coin supérieur gauche est à (0,0)). Si vous voulez voir si l'emplacement de la scène (0, 25) touche le bmd, (ce qui est le cas), vous ne pouvez pas frapper le test avec (0, 25) parce que le hitTest mesure les emplacements par rapport au bmd. Vous devez transformer cet emplacement en (25/sqrt (2), 25/sqrt (2)), ce à quoi le code dans mon exemple est destiné. – Mahir