AS3: hitTestObject vs hitTestPoint für Kugel vs Feind
Habe ich nach der Diskussion der hitTestObject vs hitTestPoint vs custom hitTest seit geraumer Zeit. Oft bin ich nach unten gegangen die route von Punkt -, angesichts der option Form.
Allerdings - ich bin jetzt versuchen zu tun, ein hit-test wird eine Kugel trifft eine kreisförmige Feind. Was ich bin derzeit mit unter:
for (var i:int = 0; i<levelHolder.enemyArray.length; i++){
if(levelHolder.enemyArray[i]){
if(this.hitTestObject(levelHolder.enemyArray[i].hit) && hit == false && distanceTravel <= range){
trace("You hit a baddie "+i)
hit = true
this.parent.removeChild(this)
var gotShot:gotshot = new gotshot() //move to sound
gotShot.play() //move to sound
levelHolder.damageEnemy(i, damage)
}
}
}
Nun, offensichtlich dadurch verursacht wird, dass die Kugel zu stoppen, in den alpha-Bereichen rund um das hit und zählt es als Treffer.
Hab ich davon ausgehen, dass ich in der Lage wäre einfach den folgenden, doch es funktioniert nicht:
if(this.hitTestPoint(levelHolder.enemyArray[i].x, levelHolder.enemyArray[i].y, true) && hit == false && distanceTravel <= range)
...
Bewirkt dies einen sehr, sehr begrenzt Treffer Palette wie arbeiten wir mit den einzelnen X-und Y-position.
Meine Frage ist: Wie kann ich das mit mehr Sorgfalt?
- Ich sollte erwähnen, dass diese hitTest ist innerhalb bullet1.als
Du musst angemeldet sein, um einen Kommentar abzugeben.
Erste, was bemerkt, ist diese, wenn Sie sprechen Sie über die performence der code unten ist fehlgeschlagen. Einzige änderung wird es geben performence wie %90
Zweite Sache ist, um Ihre eigenen hit-test wie @Russel sagt, wenn Sie arbeiten mit Kreisen. Und versuchen Sie nicht zu verwenden Math.sqrt () - Funktion.
Vorausgesetzt, die Kugeln und die bösen sind immer kreisförmig, Sie könnte entweder...
Treffer tests für zwei kreisförmige Objekte können leicht getan werden, mit so etwas wie dieses.
Sorry, wenn dann mal etwas Psudocode, aber ich denke, dass ist relativ klar.