Quaternion.LookRotation is making my object rotate around a point?

I have this arrow: http://i.imgur.com/jr2VJbg.png?1 The parent is just an empty gameobject to fix the orientation since I when I imported the model its desired forward direction was in the y axis instead. I attached this script to the parent:

 private Camera camera;	
	void Start () {
		camera = Camera.main;
	void LateUpdate()
		Quaternion LineUpRotation = Quaternion.LookRotation(camera.transform.forward);
		this.transform.rotation = LineUpRotation;

But instead of rotating around itself, it seems to be rotating around a center point. Kind of what you would get when using RotateAroundLocal. If I attach the script to the original model and throw out the parent, it stays in place but it 1. Doesn’t rotate correctly and 2. Looks to be teleporting back and forth.

Anyone know why this script isn’t working? All I’m trying to do is look at the direction the camera is facing.

  1. You can fix your model in your modeling program (best solution).

  2. You can use code other than LookAt(). Here are a couple of potential solutions. They will point your game object at the target, but the other rotations may not be what you desire:

    transform.up = Camera.main.forward;


transform.rotation = Quaternion.FromToRotation(transform.up, Camera.main.forward) * transform.rotation;

There is also an editor script in this answer you can use to fix the rotation of your game object to that it will point towards positive ‘z’. Then you can use LookAt() to aim the game object.