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

1

15.12.2013, 21:16

[GELÖST][Farseer] Kugel rollt nicht schneller bei Änderung der Masse

Ich habe eine 2D Kugel die eine Rampe runter rollt. Ich möchte dass ich die Kugel so ähnlich wie eine Bowlingkugel verhält, also schnell eine Rampe runter rollt. Im Moment bewegt sich die Kugel aber zu langsam. Ich dachte ich könnte die Geschwindigkeit ändern indem ich die Masse der Kugel erhöhe, jedoch hat sich dadurch nichts an der Geschwindigkeit geändert. Die Kugel rollt mit genau der gleichen Geschwindigkeit die Rampe hinunter. Warum hat die Masse keinen Einfluss auf die Geschwindigkeit? Was mache ich falsch? Was muss ich tun damit die Kugel auf der Rampe schneller beschleunigt um so eine höhere Geschwindigkeit zu erreichen?
Meine World und die beiden Bodies Kugel und Rampe:

C#-Quelltext

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
       PolygonSprite = Content.Load<Texture2D>("rampesprite");
            uint[] data = new uint[PolygonSprite.Width * PolygonSprite.Height];
            PolygonSprite.GetData(data);
            Vertices textureVertices = PolygonTools.CreatePolygon(data, PolygonSprite.Width, false);
            Vector2 centroid = -textureVertices.GetCentroid();
            textureVertices.Translate(ref centroid);
            _origin = -centroid;
            textureVertices = SimplifyTools.ReduceByDistance(textureVertices, 4f);
            list = BayazitDecomposer.ConvexPartition(textureVertices);
            _scale = 1f;
            Vector2 vertScale = new Vector2(ConvertUnits.ToSimUnits(1)) * _scale;
            foreach (Vertices vertices in list)
            {
                vertices.Scale(ref vertScale);
            }

            Kugel = BodyFactory.CreateCircle(world, 0.16f, 1.0f);
            Kugel.BodyType = BodyType.Dynamic;
            Kugel.Mass = 300;
            Kugel.Position = new Vector2(0.5f, 1f);
            Kugel.AngularDamping = 0.4f;
            Kugel.Restitution = 0.2f;
            Kugel.LinearVelocity = new Vector2(0, 2.0f);

            Polygon = BodyFactory.CreateCompoundPolygon(world, list, 1.0f, BodyType.Dynamic);
            Polygon.BodyType = BodyType.Static;
            Polygon.Mass = 10;
            Polygon.IsSensor = false;
            Polygon.Position = new Vector2(1f, 3.6f);
            Polygon.Rotation = 0;

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Big_Santa« (23.12.2013, 12:50)


BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

2

15.12.2013, 21:52

Geschwindigkeit = Beschleunigung * Zeit
Geschwindigkeit ist in Metern pro Sekunde
Beschleunigung ist in Metern pro Sekunde zum Quadrat
Zeit ist in Sekunden

Masse ist offensichtlich irrelevant. Relevant ist die Beschleunigung und die Reibung. In diesem Fall also hauptsächlich die Gravitation.
Hat nicht jeder in der Schule mal das Beispiel mit der Bleikugel und der Feder gemacht, die im Vakuum gleich schnell fallen?
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

3

15.12.2013, 21:56

Hattest du das nicht in der Schule?

https://de.wikipedia.org/wiki/Freier_Fall#Geschichte

Das Runterrollen ist ja nur eine Art umgelenkter Fall. Das Gewicht hat darauf keinen Einfluss (wenn man Luftwiderstand nicht berücksichtigt). Du könntest die Gravitation erhöhen. Oder die Geschwindigkeit mit der die Simulation läuft. Vielleicht auch die Reibung der Kugel/Ebene. Aber Masse ändern, darf gar nicht funktionieren.

[edit]Mist, zu lange den Link rausgesucht :D[/edit]
Lieber dumm fragen, als dumm bleiben!

Werbeanzeige