Using AR camera to control a player forward direction movement.
I am trying to use the AR camera to substitute mouse "look at" type control on iOS so that by pointing the AR camera at an AR object you can move the player in a forward direction in the game toward it, using a virtual joystick. To get it working correctly I need the AR camera Y rotation to tell the Player the direction to walk forward in, otherwise the joystick directional controls change depending on the way the camera is facing (which is different to the player object).
I can do this in the simulator by manipulating the Y transform in the inspector, but anything other than zero causes the camera and player to spin at a constant velocity, faster the higher the value. This is made worse on the iOS device as it is causing the player to spin in every direction at an ever-increasing velocity.
Can you tell me how to stop the spinning (I am assuming dampening it) and also how to allow the player to move forward depending on the direction the AR camera is pointing only on the Y value?
Sorry if this does not make too much sense but I am brand new to Unity and feeling like I am biting off more than I can chew....
This is the code for the player movement which works correctly when I point the camera manually in the correct forward direction.
public class PlayerMovement : MonoBehaviour
{
public CharacterController controller;
protected Joystick joystick;
public float speed = 3f;
public float gravity = -9.81f;
Vector3 velocity;
// Start is called before the first frame update
void Start()
{
controller = GetComponent<CharacterController>();
joystick = FindObjectOfType<Joystick>();
}
// Update is called once per frame
void Update()
{
float x = joystick.Horizontal;
float z = joystick.Vertical;
Vector3 move = transform.right * x + transform.forward * z;
controller.Move(move * speed * Time.deltaTime);
velocity.y += gravity * Time.deltaTime;
controller.Move(velocity * Time.deltaTime);
}
And this is the code I am using to copy the rotation of the AR Camera to the Player Object so that the Player object knows the forward direction to walk in.
public Transform target;
public float smoothSpeed = 0.10f;
void LateUpdate ()
{
transform.rotation = target.rotation;
}
I can't use the player to control the camera direction, as the AR Camera takes priority and in the game, it is the priority view. ( I am using the AR camera feature to roam around a VR style room, rather than typical AR implementation.