Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 20-05-2007, 15:54   #1 (permalink)
Neuer User
 
Benutzerbild von _crypto_
 
Registriert seit: Mar 2006
Beiträge: 1.573
Denkfehler in trigonometrischer Funktion?

Also ich habe einen Spieler: Player.
Desweiteren eine Waffe: Weapon.
So, wenn man nun die maustaste drückt soll ein Geschoss am vorderen ende
der waffe erscheinen. Dies habe ich so getan:
ActionScript:
  1. var d:Number = this.getNextHighestDepth();
  2. var bullet:MovieClip = this.attachMovie("Bullet","b_"+d,d);
  3.        
  4. var c:Number = Weapon._width;
  5. var angle:Number = (Weapon._rotation < 0) ? 360 - Weapon._rotation * -1 : Weapon._rotation;
  6. // edit: das * -1 liegt daran, dass die waffe auf der y-achse gespiegelt wird, wenn mann über 90° und weniger als -90° rotiert.
  7.        
  8. var a:Number = Math.cos(angle * Math.PI / 180) * c;
  9. var b:Number = Math.sin(angle * Math.PI / 180) * c;
  10.        
  11. bullet._x = Weapon._x + a;
  12. bullet._y = Weapon._y + b;
  13. bullet._rotation = Weapon._rotation;
klapt alles soweit ganz gut, nur ist die form die beim gedrückt halten
entsteht kein kreis, sondern eher ein kreis, der an den oberen und unteren punkten
zusammengequetscht wird.
aber die berechnung müste doch stimmen oder?

hab mla was angehängt. einfahc mal maustaste gedrückt halten und einen kreis mit
der maus machen. dann sieht man das der kreis gequetscht wird.
Angehängte Dateien
Dateityp: rar test.rar (1,4 KB, 6x aufgerufen)
__________________

Currently working on:

- --- ---

-----------------------------------------------------------------
ActionScript 3.0, C++, Java, Delphi

Geändert von _crypto_ (20-05-2007 um 15:56 Uhr)
_crypto_ ist offline   Mit Zitat antworten
Alt 21-05-2007, 10:13   #2 (permalink)
.--. .. ..- ...
 
Benutzerbild von pius
 
Registriert seit: Jul 2002
Ort: munich
Beiträge: 1.345
kannst du zeile 5. noch mal erklären ... möglichst unter beachtung von "punkt-vor-strich" ...
ist der ternäre ausdruck überhaupt notwendig?
ändert sich rotation, wenn du den mc spiegelst ... und ist das für die bullets relevant?

__________________
one out of many
pius ist offline   Mit Zitat antworten
Alt 21-05-2007, 12:57   #3 (permalink)
Neuer User
 
Benutzerbild von _crypto_
 
Registriert seit: Mar 2006
Beiträge: 1.573
also das ganze zeugs in zeile 5 ist dafür da, das der winkel von 0 - 360° geht.
wenn das nicht da steht geht er von 0 - 180 und dann von -180 - 0.

so das spiegeln ändert nichts an der rotation o.ä.
ich glaube es liegt daran, dass wenn der kosinus 0 ist also das geschoss
um 0 pixel nach rechts / links verschoben werden muss, dann ist es kein dreieck
mehr und somit ist für die zeile dann praktisch so:
ActionScript:
  1. var a:Number = Math.cos(angle * Math.PI / 180) * c;
  2. var b:Number = Math.sin(angle * Math.PI / 180) * c;
  3. // diese ergeben 0 da kein dreieck mehr zustande kommt
  4.  
  5. bullet._x = Weapon._x + a ( = 0);
  6. bullet._y = Weapon._y + b ( = 0);
aber wie soll ich die kugel sonst ausrichten?

also das problem ist konkret:
die geschosse werden oberhalb und unterhalb ab einem bestimmten winkel (ca. ab 200 oben - 310 muss ich mal austracen gleich )
nicht mehr an der spitze der waffe platziert.
__________________

Currently working on:

- --- ---

-----------------------------------------------------------------
ActionScript 3.0, C++, Java, Delphi

Geändert von _crypto_ (21-05-2007 um 13:00 Uhr)
_crypto_ ist offline   Mit Zitat antworten
Alt 21-05-2007, 13:13   #4 (permalink)
.--. .. ..- ...
 
Benutzerbild von pius
 
Registriert seit: Jul 2002
Ort: munich
Beiträge: 1.345
in der swf kann ich natürlich nicht sehen, wie du den winkel für rotation zuweist ... das würde ja wohl auch mit [0..359] funktionieren ...
der sinus von 90 bzw. -90 ergibt 1 ... wäre zwar ein sehr flaches dreieck, aber richtig!!
__________________
one out of many
pius ist offline   Mit Zitat antworten
Alt 21-05-2007, 13:24   #5 (permalink)
.--. .. ..- ...
 
Benutzerbild von pius
 
Registriert seit: Jul 2002
Ort: munich
Beiträge: 1.345
Weapon._width := Breite der BOUNDINGBOX !! wenn du das immer wieder aufrufst .. dann wird di halt beim senkrechtstehen klein ... und deine 'hypotenuse' damit auch ....
__________________
one out of many
pius ist offline   Mit Zitat antworten
Antwort

Lesezeichen

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind an
Pingbacks sind an
Refbacks sind an



Alle Zeitangaben in WEZ +1. Es ist jetzt 02:13 Uhr.

Domains, Webhosting & Vserver von Host Europe
Unterstützt das Flashforum!
Adobe User Group


Copyright ©1999 – 2012 Marc Thiele