public override void _Ready() { var size = GetViewportRect().Size; var physics = new VerletWorld(); physics.AddBehavior(new GravityBehavior()); AddChild(physics); const int separation = 30; var pointCount = new Vector2(12, 10); var totalSize = pointCount * separation; var topLeftPosition = (size / 2) - (totalSize / 2); new VerletCloth( physics, topLeftPosition: topLeftPosition, pointCount: pointCount, separation: separation, pinMode: VerletCloth.PinModeEnum.TopCorners, tearSensitivityFactor: 2f, stiffness: 1f, drawPoints: true, pointRadius: 8f ); }
public override void _Ready() { var size = GetViewportRect().Size; var physics = new VerletWorld(); physics.AddBehavior(new GravityBehavior()); AddChild(physics); new VerletCreature( physics, centerPosition: size / 2, height: 200, gravityScale: 0.5f, drawSupportLinks: true ); new VerletRagdoll( physics, new Vector2(size.x * 0.75f, size.y / 2), height: 200, gravityScale: 0.25f, tearSensitivityFactor: 4, pointRadius: 5f, drawIntermediatePoints: false, drawSupportLinks: true ); }
public override void _Ready() { var size = GetViewportRect().Size; var physics = new VerletWorld(); AddChild(physics); // Attractor var attractor = physics.CreatePoint(size / 2, radius: 24, color: Colors.LightGoldenrod, mass: 1000); physics.AddBehavior(new AttractionBehavior(attractor, strength: 0.01f, radius: size.x)); // Create clusters var cluster1 = new VerletCluster( physics, size / 4, pointCount: 8, diameter: 50 ); var cluster2 = new VerletCluster( physics, size * 0.75f, pointCount: 8, diameter: 50 ); // Hidden link to simulate collisions physics.CreateLink(cluster1.Points[0], cluster2.Points[0], minimalDistance: 50, visible: false); }
public override void _Ready() { var size = GetViewportRect().Size; var physics = new VerletWorld(); AddChild(physics); var attractor = physics.CreatePoint(size / 2, radius: 24, color: Colors.LightGoldenrod, mass: 1000); physics.AddBehavior(new AttractionBehavior(attractor, strength: 0.01f, radius: size.x)); const int pointCount = 18; for (int i = 0; i < pointCount; ++i) { var pt = physics.CreatePoint(MathUtils.RandVector2(0, size.x, 0, size.y), radius: 16, mass: 10); physics.AddBehavior(new AttractionBehavior(pt, strength: -0.1f, radius: pt.Radius * 4)); } }
public override void _Ready() { var size = GetViewportRect().Size; var physics = new VerletWorld(); physics.AddBehavior(new GravityBehavior()); AddChild(physics); new VerletChainBuilder(physics) .AddPointAtPosition(x: size.x / 2, y: 0) .AddPointsWithOffset(pointCount: 8, x: 10, y: 10) .AddPointWithOffset(x: 10, y: 10, configurator: (point) => point.Radius = 30) .Build(stiffness: 0.5f); }
public override void _Ready() { var size = GetViewportRect().Size; var physics = new VerletWorld(); physics.AddBehavior(new GravityBehavior()); AddChild(physics); new VerletChainBuilder(physics) .AddPointAtPosition(new Vector2(size.x / 2, 0)) .AddPointAtPosition((size / 2) + new Vector2(80, 0)) .Build(restingDistance: size.y / 2, tearSensitivity: -1, stiffness: 0.5f); }