Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

11

24.12.2013, 18:40

Was soll denn an den Werten die das Accelerometer liefert nicht in Ordnung sein? Ich kann das Projekt gerne uploaden wenn ihr meint dass das Problem nicht am Code, sondern am Accerlerometer meines Windows Phons liegt.
Ich benutze den folgenden Code. Ich habe nur ein wenig an der Geschwindigkeit des Balls experimentiert, jedoch hat das nichts gebracht.

C#-Quelltext

1
2
3
4
5
6
7
8
9
private void UpdateUI(MotionReading e)
    {               
        float accelerometerX = e.DeviceAcceleration.X;
        float accelerometerY = e.DeviceAcceleration.Y;
        speed.X += accelReading.X;
        speed.Y += -accelReading.Y;
        BallPos.X += speed.X *0.05f;
        BallPos.Y += speed.Y *0.05f;
    }

Nimelrian

Alter Hase

Beiträge: 1 216

Beruf: Softwareentwickler (aktuell Web/Node); Freiberuflicher Google Proxy

  • Private Nachricht senden

12

24.12.2013, 19:07

Guck dir den Code doch bitte mal an und sag uns, was daran eventuell merkwürdig sein könnte.
Ich bin kein UserSideGoogleProxy. Und nein, dieses Forum ist kein UserSideGoogleProxyAbstractFactorySingleton.

13

24.12.2013, 21:35

Das einzige was ich merkwürdig finde ist das "-" bei speed.Y += -accelReading.Y;.
Da auf der Microsoft Seite aber "s.speed.Y += -accelReading.Y * ACCELFACTOR;" steht, gehe ich davon aus dass dieses "-" richtig ist. Sonst fällt mir nichts merkwürdiges auf. Das einzige was mir noch aufgefallen ist, ist dass der Ball sich auch bewegt wenn man das Windows Phone Gerät nicht neigt. Ich weiss aber nicht wie ich dieses Problem beheben soll ?(
Microsoft Seite: http://msdn.microsoft.com/en-us/library/ff604984.aspx

Nimelrian

Alter Hase

Beiträge: 1 216

Beruf: Softwareentwickler (aktuell Web/Node); Freiberuflicher Google Proxy

  • Private Nachricht senden

14

24.12.2013, 21:41

Zur Eingrenzung deines Suchbereichs: die ersten beiden Zeilen.
Ich bin kein UserSideGoogleProxy. Und nein, dieses Forum ist kein UserSideGoogleProxyAbstractFactorySingleton.

15

24.12.2013, 22:40

Ist

C#-Quelltext

1
2
 float accelerometerX = e.DeviceAcceleration.X;
       float accelerometerY = e.DeviceAcceleration.Y;

nicht das gleiche wie das hier?

C#-Quelltext

1
2
3
4
5
6
public void AccelerometerReadingChanged(object sender, AccelerometerReadingEventArgs e)
{
    accelReading.X =  (float)e.X;
    accelReading.Y = (float)e.Y;
    accelReading.Z = (float)e.Z;
}


Ich verstehe immer noch nicht was an den beiden Zeilen falsch sein soll ?( Ich komm da einfach nicht drauf :dash:

Nimelrian

Alter Hase

Beiträge: 1 216

Beruf: Softwareentwickler (aktuell Web/Node); Freiberuflicher Google Proxy

  • Private Nachricht senden

16

24.12.2013, 22:52

Findest du nicht, dass du die Werte auch benutzen solltest?
Ich bin kein UserSideGoogleProxy. Und nein, dieses Forum ist kein UserSideGoogleProxyAbstractFactorySingleton.

17

24.12.2013, 23:07

Ich benutze die Werte. Ich habe bloss nicht aufgepasst und den falschen Code hierhin kopiert :dash:
So sieht mein Code aus. Funktionieren tut es aber trotzdem nicht. Neige ich mein Windows Phone Gerät, so fällt der Ball nicht in die richtige Richtung.

C#-Quelltext

1
2
3
4
5
6
7
8
9
10
11
 Vector3 accelReading = new Vector3();
private void UpdateUI(MotionReading e)
    {               
        accelReading.X = e.DeviceAcceleration.X;
        accelReading.Y = e.DeviceAcceleration.Y;
        accelReading.Z = e.DeviceAcceleration.Z;
        speed.X += accelReading.X;
        speed.Y += -accelReading.Y;
        BallPos.X += speed.X *0.05f;
        BallPos.Y += speed.Y *0.05f;
    }

MitgliedXYZ

Alter Hase

Beiträge: 1 369

Wohnort: Bayern

  • Private Nachricht senden

18

25.12.2013, 19:18

Wie wäre es dann, wenn du versuchst durch geschicktes Ausprobieren die Bewegungsrichtungen zu tauschen, vielleicht passt es dann. Und wozu fragst du die Z-Achse ab, benutzt diese aber nicht?

19

26.12.2013, 00:58

Ich habe bereits versucht die Bewegungsrichtungen zu tauschen, jedoch hat das nichts geändert. Also z.B. speed.Y und speed.X vertauscht:

C#-Quelltext

1
2
3
4
5
6
7
8
9
10
11
 Vector3 accelReading = new Vector3();
private void UpdateUI(MotionReading e)
    {               
        accelReading.X = e.DeviceAcceleration.X;
        accelReading.Y = e.DeviceAcceleration.Y;
        accelReading.Z = e.DeviceAcceleration.Z;
        speed.X += accelReading.X;
        speed.Y += -accelReading.Y;
        BallPos.X += speed.Y *0.05f;
        BallPos.Y += speed.X *0.05f;
    }


Ich habe die Z-Achse nur abgefragt da accelReading ein Vector3 ist. Ich benutze den Wert nicht da ich ja nur X und Y brauche. Oder braucht man den Wert etwa doch? Ich dachte man bräuchte die Z-Achse nur bei 3D Spielen. Falls ich die Z-Achse doch brauche, berechne ich die Geschwindigkeit dann so

C#-Quelltext

1
 speed.Z += accelReading.Z;

oder so?

C#-Quelltext

1
 speed.Z += -accelReading.Z;

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

20

26.12.2013, 08:54

Ich habe irgendwie das Gefühl, dass du selbst am besten in der Lage sein müsstest, das Problem zu erkennen und zu lösen.
Hier hat sicher kaum jemand ein Windows-Phone. Es kann doch nicht so schwer sein, sich die vom Gerät gelieferten Werte anzuschauen und sich zu überlegen, wie man sie korrekt benutzt?
Ich meine, das ist ein typischer Fall von Probieren und Debuggen. Lass dir die Werte in Echtzeit ausgeben. Bewege das Gerät, schau was passiert. Das kann dir hier niemand abnehmen.

Werbeanzeige