Connecting gameobject to specific part of player

Right now I have a gameobject that attaches to a player when they touch it, however I’m trying to make it connect right in front of them instead of wherever it initially touches them:

void OnCollisionEnter(Collision collision) 
{
	ContactPoint contact = collision.contacts[0];
	Quaternion rot = Quaternion.FromToRotation(Vector3.up, contact.normal);
	//Vector3 pos = contact.point; //(-2.5, 0.7, 13.1) is near ideal location
	Vector3 pos = new Vector3(-2, 1, 13); //(-2.5, 0.7, 13.1) is near ideal location
	var joint1 = collision.gameObject.AddComponent<FixedJoint> ();
	joint1.connectedBody = transform.GetComponent<Rigidbody> ();

}

Is there a way to have it connect right in front of the player each time?

Thanks!

As far as I can tell, you’re not setting the transform’s position anywhere. Set it to whatever you want after you parent the object. If it doesn’t receive a new position, it will just use the old one.

Thank you for the help.

I kept trying every variation of forward. This is the solution that worked:

		var new_pos = collision.gameObject.transform.position;
		new_pos += collision.gameObject.transform.forward * 2;
		new_pos += collision.gameObject.transform.up * 1;
		transform.position = new_pos;

		var joint1 = collision.gameObject.AddComponent<FixedJoint> ();
		joint1.connectedBody = transform.GetComponent<Rigidbody> ();
		soccer_ball_joint = joint1;