- Home /
C# ScreenToWorldPoint(Input.mousePosition) is not stable
Hi,I create 2d top-down shooter, like hot line miami. Camera follow the player position ,player look at mouse position.
To get mouse position,I use screenToWorldPoint(Input.mousePoint) . var inputMouseWorld = Camera.main.ScreenToWorldPoint(_inputMouse);
And to get player direction
var mouseDir = (inputMouseWorld - transform.position);
The problem is that mouseDir is unstable when I just push move button and DON'T move mouse position.Of course,I don't move key and mouse,Player don't rotate.When the mouse point and the player's direction of travel are parallel, it does not shake much. Vertical sway greatly...Does anyone know what happen??Thanks This is my script
PlayerMove private void FixedUpdate() { _rigidbody2D.rotation = _angle; _rigidbody2D.velocity = _inputKey * Speed * Time.fixedDeltaTime; } private void Update() { _inputKey = new Vector2(Input.GetAxisRaw("Horizontal"), Input.GetAxisRaw("Vertical")); _inputMouse = Input.mousePosition; var inputMouseWorld = Camera.main.ScreenToWorldPoint(_inputMouse); var mouseDir = (inputMouseWorld - transform.position); _angle = Mathf.Atan2(mouseDir.y, mouseDir.x) * Mathf.Rad2Deg - 90; if (CompareTag("Player")) Debug.Log("Dir:" + mouseDir + " inputMouseWorld:" + inputMouseWorld + " transform.position:" + transform.position); }
CameraMove private void Start() { _target = GameObject.FindGameObjectWithTag("Player").transform; } private void LateUpdate() { transform.position = _target.position + new Vector3 (0,0, DistanceZ); transform.rotation = Quaternion.Euler(Vector3.zero); }
Debug.Log I pushed W key,and player looked at Yaxis
Try normalizing your directional vector:
var mouseDir = (input$$anonymous$$ouseWorld - transform.position).normalized;
@bobisgod234 Thank you for your reply! But in my case it did not change.
Your answer
![](https://koobas.hobune.stream/wayback/20220612155429im_/https://answers.unity.com/themes/thub/images/avi.jpg)