private void GrabObjects() { var playerPosition = character.GameObj.Transform.Pos; var actionSquareSize = new Vector2(32, 32) * 2; var list = RigidBody.QueryRectGlobal(playerPosition.Xy - (actionSquareSize / 2), actionSquareSize); foreach (var item in list) { if (item.GameObj.GetComponent <Obstacle>() != null) { var distance = (item.GameObj.Transform.Pos - playerPosition).Length; if (distance <= actionSquareSize.Length) { //VisualLog.Default.DrawPoint(item.GameObj.Transform.Pos).WithOffset(-100).WithColor(ColorRgba.Red); var rb = character.GameObj.GetComponent <RigidBody>(); var distJoint = new DistanceJointInfo(); distJoint.TargetDistance = 32; distJoint.Frequency = 2; distJoint.CollideConnected = true; rb.AddJoint(distJoint, item); jointedThings.Add(distJoint); } } } }
private void DrawJoint(Canvas canvas, DistanceJointInfo joint) { this.DrawLocalDistConstraint(canvas, joint.ParentBody, joint.OtherBody, joint.LocalAnchorA, joint.LocalAnchorB, joint.TargetDistance, joint.TargetDistance); this.DrawLocalAnchor(canvas, joint.OtherBody, joint.LocalAnchorB); this.DrawLocalAnchor(canvas, joint.ParentBody, joint.LocalAnchorA); }