Autor |
Nachricht |
CreeTar
Threadersteller
Dabei seit: 21.07.2005
Ort: Stuggi Town
Alter: -
Geschlecht: -
|
Verfasst Mi 14.03.2007 18:24
Titel Flash Problem mit Objekt-Rotation |
|
|
- Grünes Objekt: Gibt Bewegung und Rotation von rotem Objekt vor
(im Prinzip der verschobene Mittelpunkt des roten Objekts, sprich Rotationspunkt)
- Blaues Objekt: Soll sich bei Kontakt an die Bewegung von rotem Objekt orientieren
Hab schon atan2 versucht, aber bin wohl zu blöd. War in Mathe nie ein Genie
Würde mich freuen wenn mir jemand den Code zaubert.
Code ist grob so:
Code: |
if (objContact)
{
// rotate Obj in depend. of mainObj
objRotate();
}
|
und das ganze nochmal optisch:
http://as-bytes.com/public/flash/test.swf
ta ^^
Zuletzt bearbeitet von CreeTar am Mi 14.03.2007 18:25, insgesamt 1-mal bearbeitet
|
|
|
|
|
DayusRam
Dabei seit: 18.03.2007
Ort: -
Alter: -
Geschlecht: -
|
Verfasst So 18.03.2007 23:05
Titel
|
|
|
Code: |
function blauTrifftGruen() {
var xpos1:Number = rot._x-blau._x;
var ypos1:Number = rot._y-blau._y;
var radius:Number = Math.sqrt(xpos1*xpos1+ypos1*ypos1);
var radians1:Number = Math.atan2(blau._y-rot._y, blau._x-rot._x);
var winkel1:Number = (radians1/Math.PI)*180;
blau.onEnterFrame = function() {
var winkel2:Number = rot._rotation+winkel1;
var radians2:Number = winkel2*(Math.PI/180);
var xpos2:Number = radius*Math.cos(radians2);
var ypos2:Number = radius*Math.sin(radians2);
blau._x = xpos2+rot._x;
blau._y = ypos2+rot._y;
};
}
|
|
|
|
|
|
Anzeige
|
|
|
CreeTar
Threadersteller
Dabei seit: 21.07.2005
Ort: Stuggi Town
Alter: -
Geschlecht: -
|
Verfasst Di 20.03.2007 04:09
Titel
|
|
|
DayusRam hat geschrieben: | Code: |
function blauTrifftGruen() {
var xpos1:Number = rot._x-blau._x;
var ypos1:Number = rot._y-blau._y;
var radius:Number = Math.sqrt(xpos1*xpos1+ypos1*ypos1);
var radians1:Number = Math.atan2(blau._y-rot._y, blau._x-rot._x);
var winkel1:Number = (radians1/Math.PI)*180;
blau.onEnterFram :thumbsup: :thumbsup: :thumbsup: :thumbsup: e = function() {
var winkel2:Number = rot._rotation+winkel1;
var radians2:Number = winkel2*(Math.PI/180);
var xpos2:Number = radius*Math.cos(radians2);
var ypos2:Number = radius*Math.sin(radians2);
blau._x = xpos2+rot._x;
blau._y = ypos2+rot._y;
};
}
|
|
Herrlich, so wünscht man sich das
die Rotation war nicht dabei, aber da hab ich die Geschwindigkeit des Objekts und die Richtung,
läuft prima.
Vielen Dank
|
|
|
|
|
CreeTar
Threadersteller
Dabei seit: 21.07.2005
Ort: Stuggi Town
Alter: -
Geschlecht: -
|
Verfasst Sa 07.04.2007 02:41
Titel
|
|
|
Hab ein Problem mit der Rotation. Das Objekt wird nicht vom HitPoint an rotiert sondern es springt kurz
Also hier mal die Daten:
Kontaktpunkt beider Objekte (48.7,-2.25)
eigentliche Position von Objekt 1: 48.71
berechnete Position von Objekt 1: 24.49
Rotation von Objekt 1: 103
Rotation von Objekt 2: -50
Berechneter Winkel vom Objekt 2 zu Objekt 1: -5.96
Kurz gesagt
Punkt bei Aufschlag (48.7,-2.25)
Punkt nach Rotationsformel (24.45,21.5)
Berechnen von Winkel und Distanz von Objekt 1 zu Objekt 2, die Formeln stimmen
Code: |
var xpos1:Number = obj1._x-obj2._x;
var ypos1:Number = obj1._y-obj2._y;
this.distance = Math.sqrt(xpos1*xpos1 + ypos1*ypos1);
this.angle = ((Math.atan2(obj2._y-obj1._y, obj2._x-obj1._x))/Math.PI) * 180;
|
Berechnung der Punkte für Objekt 1 abhängig von der Bewegung und Rotation von Objekt 2
Code: |
var radTemp:Number = (obj1._rotation + this.angle) * (Math.PI/180);
obj2._x = this.distance * Math.cos(radTemp)+obj1._x;
obj2._y = this.distance * Math.sin(radTemp)+obj1._y;
// rotieren von Objekt 2 mit der Rotationsgeschwindigkeit von Objekt 1
obj2._rotation += this.rotSpeed;
|
Im Prinzip funktioniert es wunderbar, bis auf die Tatsache das wenn der Punkt von Objekt 1
berechnet wird, er nicht den exakten Aufschlagspunkt als Ergebnis bekommt sondern nur
eine Annäherung, was dazu führt das das Objekt kurz einen Satz macht und dann rotiert/bewegt.
Kann mir da jemand einen Tipp geben? Würde es ungern mit einer Animation lösen
Kann es sein das es innerhalb von Flash Schwankungen bei der Genauigkeit gibt?
Wie man sieht sind obige Werte nicht alle gleich obwohl Sie mit trace() ausgelesen wurden
Cheers
Zuletzt bearbeitet von CreeTar am Sa 07.04.2007 02:43, insgesamt 1-mal bearbeitet
|
|
|
|
|
|
|
|
Ähnliche Themen |
Objekt-Rotation um eigene Achse
360° Rotation in Flash
suche rotation/slider gallery in flash
(Flash 8) - Rotation Pfeil ausgerichtet an einem MC
Gruppierte Elemente in Flash - Rotation funktioniert nicht
3d objekt in Flash
|
|