public override void _Ready() { var size = GetViewportRect().Size; var attractor = new PhysicsAttractor() { Position = size / 2 }; AddChild(attractor); var spawner = new SimpleTouchSpawner() { SpawnFunction = (position) => { var body = new SimpleBall() { GravityScale = 0, Mass = 2, GlobalPosition = position }; body.AddToGroup("rigidbody"); return(body); } }; AddChild(spawner); // Two initial balls spawner.SpawnBody(new Vector2(size.x * 0.25f, size.y * 0.25f)); spawner.SpawnBody(new Vector2(size.x * 0.75f, size.y * 0.75f)); }
private void Generate() { _balls = new SimpleBall[NumberOfBalls]; for (int i = 0; i < NumberOfBalls; ++i) { _balls[i] = new SimpleBall { X = _rnd.Next(0, 29), Y = _rnd.Next(0, 29), dX = _rnd.NextDouble() + 0.5, dY = _rnd.NextDouble() + 0.5 }; if (_rnd.Next(1, 3) == 1) { _balls[i].dX = -_balls[i].dX; } if (_rnd.Next(1, 3) == 1) { _balls[i].dY = -_balls[i].dY; } } }
public override void _Ready() { ball1 = new SimpleBall() { Radius = Radius, Position = new Vector2(-Distance, -Distance) }; ball2 = new SimpleBall() { Radius = Radius, Position = new Vector2(Distance, Distance) }; AddChild(ball1); AddChild(ball2); var join = new PinJoint2D() { NodeA = ball1.GetPath(), NodeB = ball2.GetPath(), Softness = 0.1f }; ball1.AddChild(join); }