2017-02-10 2 views
-1

Je ne veux pas se chevaucher les objets.Aussi je veux garder les objets dans la limite de la scène.Les boutons doivent s'éloigner lorsqu'ils se touchent.J'ai essayé hitTestObject mais les boutons se déplacent comme ça .Déplacement de l'objet lors de la frappe de l'autre

Exemple de code de déplacement pour les poissons 2 * MISE À JOUR

var fish2x:Number=10; 
var fish2y:Number=14; 
  
stage.addEventListener(Event.ENTER_FRAME,h42); 
function h42(s:Event = null) { 
fish2.x+=fish2x; 
fish2.y+=fish2y; 
if ((fish2.x>=stage.stageWidth-fish2.width/2)|| (fish2.x <= fish2.width/2)) { 
    fish2x*=-1; 
} 
if ((fish2.y>=stage.stageHeight-fish2.height/2)|| (fish2.y <= fish2.height/2)) { 
    fish2y*=-1; 
} 

if (fish2.hitTestObject(fish3)){ 
fish2y *= -1; 
fish3y *= -1; 
h42(); 
} 
} 

Aussi j'ai essayé en fonction diffrent

stage.addEventListener(Event.ENTER_FRAME,crash); 
function crash(s:Event) { 
  
if (fish2.hitTestObject(fish || fish3)) { 

fish2y*=-1; 
message.text="crash"; 
} 
} 

Pour plus de 2 poissons fonctionne pas. Je mets null fish2 et fish 3 que j'utilise ce code.

if (fish2.hitTestObject(fish3 || fish4)){ 
fish2y *= -1; 
fish2x *= -1; 
h42(); 
} 

J'ai changé hittestoject tout d'eux.Toute fonction change comme ceci mais cela ne fonctionne pas.

Mise à jour 2

Maintenant, il n'y a pas d'erreur, mais ne se passe pas quand fish3 a frappé chaque other.I enlevé « null » poissons et 3 seulement utilisé pour les poissons 2.

 if (fish2.hitTestObject(fish || fsih3)){ 
fish2y *= -1; 
fish2x *= -1; 
fishy*=-1; 
fishx*=-1; 
fish3y*=-1; 
fish3x*=-1; 
} 
} 
+0

« Move comme un fou » ne nous aide pas visualiser ce qui se passe réellement. –

+0

Je ne sais pas si vous pouvez faire hittestobject comme ça (x || b). Je pense que vous devrez peut-être faire hittestobject (x) || hittestobject (b) –

+0

Hittestobject travail correct Je peux voir le texte du message quand on se frappe.J'ai utilisé "| |" J'ai un objet 7 sur la scène juste tester pour 2 poissons.If poisson 2 frapper le poisson ou le poisson3 aller en arrière direction. Mon problème est Comment puis-je déplacer l'objet pour inverser la direction quand ils se touchent. – KucuKeko

Répondre

1

Je pense qu'il est parce qu'ils bougent tous les deux. Lorsque vous vérifiez les collisions entre les poissons A et B, si la collision est vraie, ne changez pas simplement leur vitesse par * = - 1. Au lieu de cela, déplacez-les également une fois.

if (A.hitTestObject(B)){ 
    Ay *= -1; 
    Ax *= -1; 
    By *= -1; 
    Bx *= -1; 
    h42(); 
} 

et ajoutez null à votre valeur par défaut comme ceci:

function h42(s:Event = null) { 
+0

Je change de fonction à null et ajoute la fonction h42 à votre code. Mais ça bouge encore. Que suggérez-vous? Merci – KucuKeko

+0

Ok maintenant pas coincé, mais il saute une autre position.Voici le gif http://keko11.byethost24.com/bandituruk.gif – KucuKeko

+0

Pouvez-vous coller le code dans votre message original comme il est actuellement? –