private void FixedUpdate() { //move player Vector2 touchPosition = virtualJoystic.GetPosition(); float moveHorizontal = touchPosition.x; float moveVertical = touchPosition.y; Vector3 movement = new Vector3(moveHorizontal, 0.0f, moveVertical); rb.velocity = (movement.magnitude > 1) ? movement.normalized * playerSpeed : movement * playerSpeed; //rotate player to faca movement direction if (moveHorizontal != 0.0f || moveVertical != 0.0f) { transform.rotation = Quaternion.Slerp(transform.rotation, Quaternion.LookRotation(movement), 0.15F); } //Keep player in play area rb.position = new Vector3( Mathf.Clamp(rb.position.x, xMin, xMax), 0.0f, Mathf.Clamp(rb.position.z, zMin, zMax) ); }