- Home /
How to make an arrow constantly point at an object without jittering?
I have an arrow attached to a vehicle that is moved by the player, and I need the arrow to always point at at object that is fixed in place. I have been using Transform.LookAt, but as the vehicle gets farther from the origin, it jitters more and more. I am guessing this is because of the floating point precision problem. Any ideas of how to do this in a clean way?
How far away are your objects? Unity recommends keeping everything within 100,000 units of the origin.
You might try calling LookAt with a vector that is in the direction of the target. Something like myPos + (targetPos - myPos) * 0.5f
Answer by nesis · Feb 27, 2014 at 01:58 AM
Distance / floating point precision shouldn't matter for jittering, since Transform.LookAt() uses direction rather than the vector from A to B.
I'm making an assumption here, but the jittering is likely caused by the arrow being parented to your vehicle, and your arrow's Update() running before the vehicle's Update(). The problem with that is that in your arrow's Update() you set the arrow's orientation (which should be 100% accurate), then in your vehicle's Update() you turn the vehicle (which, since the arrow is parented to the vehicle, also turns the arrow, now making its orientation wrong!).
To fix this, use LateUpdate() for the arrow instead of Update(). Doing that will mean your arrow's orientation gets updated after the vehicle turns, making it 100% accurate when the given frame is rendered.
Your answer
![](https://koobas.hobune.stream/wayback/20220613134840im_/https://answers.unity.com/themes/thub/images/avi.jpg)
Follow this Question
Related Questions
Camera rotation around player while following. 6 Answers
Transform.LookAt - Look through Y-Axis? 1 Answer
How do I rotate object smoothly 3 Answers
How to have vertical and horizontal axis work at the same time 1 Answer
RotateAroundPivot rong offset 0 Answers