{lang: 'de'}
Flashhilfe.de - Flash Community

sich ueberlappende Objekte - Problem [Flash 10]

 


AntwortenRegistrieren Seite1  

drpelz#1
Benutzerbild von drpelz
Beiträge: 15
Registriert: Jul 2011

19.08.2011, 23:41

Hallo,

also ich habe da folgendes Problem:
In meinem Spiel entstehen Scores and der Stelle wo ein Gegner abgeschossen wird. Allerdings ueberlappen sich die Scores visuell sobald mehrere Gegner auf zu engem Raum abgeballert wurden. Meine Idee um das zu verhindern war so eine Art Kollisionsabfrage zu machen mit Distanzmessung zu jedem Score, aber irgendwie kriege ich das nicht gebacken. Kann mit bitte da jemand weiterhelfen? Dankeschoen!


ActionScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
private function checkScoreDistance():void
{
     scoreManager.scoreCount = scoreManager.scores.length;
     if (scoreManager.scoreCount >= 1)
     {
        scoreManager.scoreCount = scoreManager.scores.length - 1;
        scoreManager.scoreCountTwo = scoreManager.scores.length - 2;
           
        scoreOne: for (var scoreCtr:int = scoreManager.scoreCount; scoreCtr >= 0; scoreCtr--)
        {
        
           tempScore = scoreManager.scores[scoreCtr];
           tempScore.point.x = tempScore.x;
           tempScore.point.y = tempScore.y;
           oldtempScoreX = tempScore.x;
           oldtempScoreY = tempScore.y;
              
           var tempScoreTwo:Score;
           scoreTwo: for (var scoreCtrTwo:int = scoreManager.scoreCountTwo; scoreCtrTwo >= 0; scoreCtrTwo--)
           {
              tempScoreTwo = scoreManager.scores[scoreCtrTwo];
              tempScoreTwo.point.x = tempScoreTwo.x;
              tempScoreTwo.point.y = tempScoreTwo.y;
                    
              oldtempScoreTwoX = tempScoreTwo.x;
              oldtempScoreTwoY = tempScoreTwo.y;
                    
              var scoresX:Number;
              scoresX = oldtempScoreTwoX - oldtempScoreX;
                    
              var scoresY:Number;
              scoresY = oldtempScoreTwoY - oldtempScoreY;
                    
              var dist:Number;
                    
              dist = Math.sqrt(scoresX * scoresX + scoresY * scoresY);
                                      
              if (dist <= 25)
              {
                 oldtempScoreX -= 25;
                 oldtempScoreTwoX += 25;
                       
                 oldtempScoreY -= 25;
                 oldtempScoreTwoY += 25;
                 }
                    
              }
           
           }
        }
     }
}
Geändert von drpelz am 19.08.11 um 23:44 Uhr
f0rml3ss#2
Benutzerbild von f0rml3ss
Beiträge: 447
Registriert: Mar 2008

20.08.2011, 09:55