Zurück   Flashforum > Flash > ActionScript > ActionScript 3

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 03-11-2011, 15:37   #1 (permalink)
Neuer User
 
Registriert seit: Jul 2011
Beiträge: 26
Unhappy Gegner rotiert sehr merkwuerdig

Hallo Leute,

ich habe hier folgendes Problem: wenn ich mit meinem Player nahe an meinen Feind herankomme rotiert dieser in meine Richtung. Wenn ich aber nun meinen Feind mit meinem Player umkreise (dieser dreht sich entsprechend mit) dann macht er irgendwann ploetzlich eine 360 Grad-Drehung. Das passiert wenn ich ihn umkreise. Momentan weiss ich nicht wo der Fehler ist und komme einfach nicht mehr weiter. Es waere sehr nett, wenn mir da jemand bitte weiterhelfen koennte. Danke.

Code:
	

tempEnemy.dX = tempEnemy.x - player.x;
	tempEnemy.dY = tempEnemy.y - player.y;
							
	tempEnemy.rotateTo = toDegrees(getRadians(tempEnemy.dX, tempEnemy.dY));
							
							
							
	if(tempEnemy.frame < 0) tempEnemy.frame += 360;
	if(tempEnemy.frame > 359) tempEnemy.frame -= 360;
							
							
	tempEnemy.trueRotation = int((tempEnemy.rotateTo - tempEnemy.frame) / tempEnemy.rotateSpeed);
							
	tempEnemy.vX += (player.x - tempEnemy.x) / tempEnemy._speed;
	tempEnemy.vY += (player.y - tempEnemy.y) / tempEnemy._speed;
			 
	tempEnemy.vX *= tempEnemy.decay;
	tempEnemy.vY *= tempEnemy.decay;


private function toDegrees(radians:Number):Number
    {
        var degrees:Number = Math.floor(radians * 180 / Math.PI);
        //trace (degrees);
        return degrees;
    }

private function getRadians(deltaX:Number, deltaY:Number):Number
    {
        var radian:Number = Math.atan2(deltaY, deltaX);

        if (deltaY < 0)
        {
            radian += (2 * Math.PI);
        }
        return(radian);
    }
drpelz ist offline   Mit Zitat antworten
Alt 03-11-2011, 19:59   #2 (permalink)
Techniker
 
Benutzerbild von hgseib
 
Registriert seit: Sep 2003
Ort: 64807
Beiträge: 16.324
schau dir sowas mal an:
H.G.Seib
-> Position (ZIP laden)
position: ermittelt ob B vor oder hinter, links oder rechts von A steht
__________________
die ultimative antwort auf alle programmierfragen: der debugger
mfg h.g.seib www.SeibsProgrammLaden.de
hgseib ist offline   Mit Zitat antworten
Alt 04-11-2011, 00:43   #3 (permalink)
Neuer User
 
Registriert seit: Jul 2011
Beiträge: 26
Danke! Ich werd's mal ausprobieren ob das damit klappt!
drpelz ist offline   Mit Zitat antworten
Alt 04-11-2011, 11:10   #4 (permalink)
Keine Panik
 
Registriert seit: Apr 2010
Ort: Düsseldorf (im ernst)
Beiträge: 1.867
das ist doch eigentlich "nur" ein shortRotation-Problem

wenn dein enemy bei frame 359 ist, und der neue wert bei 2 liegt, dreht er sich 357° nach links, und nicht 3~ nach rechts.

wenn ich deine Variablen richtig verstanden habe:
PHP-Code:
var dx:Number tempEnemy.player.x;
var 
dy:Number tempEnemy.player.y;
//delta rotation berechnen
var dr:Number = (Math.atan2(dydx) * Math.PI/180 tempEnemy.frame) % 360;
//shortRotation ermitteln
if(dr 180dr -= 360; else if(dr <= -180dr += 360;
//"echte" Rotation daraus berechnen
dr = (dr/tempEnemy.rotateSpeed tempEnemy.frame) % 360;

tempEnemy.frame int(dr<0dr 360dr);

tempEnemy.vX -= dx tempEnemy._speed;
tempEnemy.vY -= dy tempEnemy._speed;
         
tempEnemy.vX *= tempEnemy.decay;
tempEnemy.vY *= tempEnemy.decay
ansonsten sieh es als Konzept.
wieso speicherst du diese ganzen temporären Werte in deinem Enemy? oder brauchst du die noch für ne Andere Berechnung in deinem code?
__________________
greetz Thomas

plz RTFM & Coding Conventions

Geändert von thomas_E (05-11-2011 um 01:36 Uhr) Grund: Fehler im code
thomas_E ist gerade online   Mit Zitat antworten
Alt 04-11-2011, 18:04   #5 (permalink)
Neuer User
 
Registriert seit: Jul 2011
Beiträge: 26
Vielen dank. Ich werde das mal so schnell wie moeglich ausprobieren ob das damit klappt. Die temporaeren Werte werden fuer eine spaetere Berechnung nochmals benoetigt.
drpelz 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


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
[Flash 8] Mc mit Statischertextfeld - rotiert - wie zentrieren? palpalo Flash Einsteiger 2 29-04-2011 18:50
Sehr viel Text und sehr lahme Mausinteraktion elmanuelmanu ActionScript 3 3 25-03-2010 11:23
dynamische Textfelder > rotiert XChrisX Flash MX 2004 2 26-02-2007 13:53
KI Gegner snoob ActionScript 2 8 14-05-2006 21:28
MC rotiert um Punkt und entfernt sich gleichzeitig von ihm bronkobecker Spielkonzepte und Spieleprogrammierung 6 19-10-2005 12:05


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

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


Copyright ©1999 – 2012 Marc Thiele