- Home /
Moving player using cam.ScreenToWorldPoint, with camera smooth following the player
Hello,
In my game, I use the deltaTouch to move my player.
And the camera smooth follow the player.
I do that like this :
deltaPosition = cam.ScreenToWorldPoint(new Vector3(gesture.position.x, 0, zDist)) - startPosition
- (cam.transform.position - startCameraPosition);
player.position += Vector3.right * deltaPosition.x;
and for the camera :
transform.position = new Vector3(Mathf.Lerp(transform.position.x, player.position.x, speed * Time.deltaTime), transform.position.y, target.position.z + z);
It works fine, it's perfect. BUT : The player is glitching/vibrating a little bit.
It's at 100% because of the positioning of the player depends of the camera position, and the camera position depends of the player...
I have no idea how to handle this visual issue.
Thanks a lot for your helps.
Best regards,
AB
Answer by Senodric · Mar 28, 2018 at 09:18 AM
Is the camera transform inside LateUpdate?
In fact I just finished a version independant of the camera position.
At start I'm doing that :
float screenWidthToWorldX = cam.ScreenToWorldPoint(new Vector3(cam.pixelWidth, cam.pixelHeight/2f, zDist)).x - cam.ScreenToWorldPoint(new Vector3(0, cam.pixelHeight / 2f, zDist)).x;
float ratioScreenToWorldX = screenWidthToWorldX / cam.pixelWidth;
and then for the move :
deltaPosition_gesture = (gesture.position - startPosition_gesture).x * ratioScreenToWorldX;
playerParent.position += Vector3.right deltaPosition_gesture ratioWidth;
startPosition_gesture = gesture.position;
And the player still "vibrating" ... especially on android :(
Your answer
Follow this Question
Related Questions
How to move the main camera in Google Cardboard? 0 Answers
Different resolutions make the swipe of my player go at different speeds on different devices 0 Answers
Throw an object via touch/mouse flick 0 Answers
How to smoothly rotate camera around an object with touch 1 Answer
Camera momentum after lifting finger 0 Answers