예제 #1
0
        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);
                    }
                }
            }
        }
예제 #2
0
 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);
 }