Scripting and animations

Hello,

So here I am coding a spell for a mage character for my game which is in first person view. Basically the spell is an Ice wall spell but with a little bit of a twist, the Icewall is not spawned directly when the player press the key.
Instead a ball travel really slow and when a ground is hit it checks if there is enough space for my wall and then it spawns it while the ball if getting destroyed. The spawn is an animation of an object getting out of the gound.

I have two main problems that I can’t seem to solve alone, first everything works like it should and the animation is triggered BUT it doesn’t trigger where my iceball is, it triggers always in the same spot. I tried multiple things like putting it in an empty game object like I saw on some answer but it makes it worse.

The other problem is the wall is always spawned the same way so depending on your position when you launch it you see his face or his side. I have no clue how I could make it so the wall always face the player.

Here is some code that is attached to my IceBall :

public void OnCollisionEnter(Collision col)
	{
		RaycastHit hitfwd;
		RaycastHit hitbck;

		Ray fwdray = new Ray (transform.position, Vector3.forward);
		Ray bckray = new Ray (transform.position, -Vector3.forward);

		if (col.gameObject.tag == "badguy") {
			Destroy(col.gameObject);
		}

		if (col.gameObject.tag == "Wall"  !hasHit) {
			Camera cam = Camera.main;
			rigidbody.AddForce(-cam.transform.up * 100, ForceMode.Impulse);
			hasHit = true;
		}

		if (col.gameObject.tag == "Ground"  !hashitground) 
		{

			IceballKine.rigidbody.isKinematic = true;
			balllight.light.range = 80;
			hashitground = true;
			Physics.Raycast(fwdray, out hitfwd);
			Physics.Raycast(bckray, out hitbck);
			if(hitbck.distance > 2  hitfwd.distance > 2)
				canBuildaWall = true;

			if(canBuildaWall == true)
			{
				Destroy(gameObject, 3.0f);
				GameObject WallAnim = (GameObject)Instantiate (Wall, col.transform.position, col.transform.rotation);
				WallAnim.animation.CrossFade("Animation Wall");
				hashitground = false;

			}


		}
	}

No one has any clue?

I think I’ve found a beginning of a solution for the second problem but the first one s still a mystery for me.