I created a look to teleport script and I'm falling through the level

I created this script to teleport where you look and every time I teleport to a horizontal object it makes me sink into the ground. I’m using this for moving with the google cardboard, but when I use a fps character it doesn’t sink please help.

    private RaycastHit lastRaycastHit;
public AudioClip audioClip;

// Use this for initialization
void Start () {
	Cursor.visible = false;
}

private GameObject GetLookedAtObject(){
	Vector3 origin = transform.position;
	Vector3 direction = Camera.main.transform.forward;
	float range = 1000;
	if (Physics.Raycast (origin, direction, out lastRaycastHit, range))
		return lastRaycastHit.collider.gameObject;
	else
		return null;
}

private void TeleportToLookAt(){ 
	transform.position = lastRaycastHit.point + lastRaycastHit.normal * 2;
	if (audioClip != null)
		AudioSource.PlayClipAtPoint (audioClip, transform.position);
}
	// Update is called once per frame
void Update () 
{
if (Input.GetButtonDown ("Fire1"))
		if (GetLookedAtObject  () != null)
			TeleportToLookAt ();
}

}

you need an offset somewhere of + a height of which you want the player to spawn (im new to coding but I know that…kind of…please don’t lynch me)

There’re two problems I see here that could be causing this; first off, you probably need to add the characters collider height to the position so this doesn’t happen. So, for example:
Collider playerCollider = transform.GetComponent();
transform.position = lastRaycastHit.point + (lastRaycastHit.normal * (playerCollider.bounds.extents.y));

See Unity - Scripting API: Collider.bounds

Also, when moving a rigidbody/collider, you should also move using the rigidbody, instead of the transform so that physics updates correctly: