Problem understanding transform.localPosition
I have instantiated an object to the bottom left corner of the screen. Then I wan to Lerp this object to the middle of the screen.
endOffset = Camera.main.ViewportToWorldPoint(new Vector3(0.5f, 0.5f, 1.5f)) - Camera.main.transform.position;
The camera will be moving. I have tried 2 different methods. The first works, the second does not but I would have thought they should be the same. First I use ViewportToWorldPoint to find the world point of the end position in the middle of the screen. I use local coordinates by subtracting off the Camera.main.transform.position for my starting and ending vectors. At the end I add the Lerped offset to Camera.main.transform.position and set my object position here.
transform.position = Vector3.Lerp(startOffset, endOffset, timer * moveSpeed) + Camera.main.transform.position;
This works fine.
But I noticed there is a built-in vector for this purpose called transform.localPosition. When I try to use this it does not work as expected. The end position of the transform is too low. The x coordinate (in Viewport space) is correct, but not y or z.
I don't understand. This should be the correct definition of the local position, no?
In other words, I have an object parented to the main camera and it's value for
transform.localPosition
is different from it's value for
transform.position - Camera.main.transform.position
I don't understand why. The scale of the object is still at the default (1,1,1).
Your answer
![](https://koobas.hobune.stream/wayback/20220612090410im_/https://answers.unity.com/themes/thub/images/avi.jpg)