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;
|