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

Pack doch alle "Score"-Sprites in einen Layer und setz den Blend-Mode auf Additive
Adobe AS3.0 Stichwortverzeichnis
drpelz#3
Benutzerbild von drpelz
Beiträge: 15
Registriert: Jul 2011

Themenautor/in

21.08.2011, 14:35

Danke. Wenn ich die Objekte auf additive setze, was passiert dann genau? Ist das so ein Ebeneneffekt wie in Photoshop? Was genau macht der in Flash?
f0rml3ss#4
Benutzerbild von f0rml3ss
Beiträge: 447
Registriert: Mar 2008

21.08.2011, 19:53

Ja der Effekt ist wie jener, den es im PS gibt:

"Addiert den Wert der Grundfarben des Anzeigeobjekts zu den Farben des Hintergrunds (mit einem oberen Grenzwert von 0xFF) [255]. "

Quelle - Hier findest du auch alle anderen BlendMode

;)
Adobe AS3.0 Stichwortverzeichnis

AntwortenRegistrieren Seite1  

Schnellantwort

Du musst registriert sein, um diese Funktion nutzen zu können.

 
Ähnliche Beiträge zum Thema
Partner Webseiten: art-and-law.de  Mediengestalter.info   phpwelt.de   Scubacube.de  
Haftungsausschluss   Datenschutzerklärung   Impressum
© 1999-2022 Sebastian Wichmann - Flashhilfe.de