I have a dash ability in my game that causes the player to dash towards the mouse or the direction the controller knob is being pressed. That all works fine. I want to rotate an arrow-like game object using the input to indicate where the player will dash. I already have a reference to the game object:
public GameObject dashAim;
But i’m not sure how to use the inputs for the rotation. I’ve had help with this before, but this was using the old input system:
public class RotateToMouse : MonoBehaviour
{
void Update()
{
//rotation
Vector3 mousePos = Input.mousePosition;
mousePos.z = 5.23f;
Vector3 objectPos = Camera.main.WorldToScreenPoint(transform.position);
mousePos.x = mousePos.x - objectPos.x;
mousePos.y = mousePos.y - objectPos.y;
float angle = Mathf.Atan2(mousePos.y, mousePos.x) * Mathf.Rad2Deg;
transform.rotation = Quaternion.Euler(new Vector3(0, 0, angle));
}
}
i’m just not quite sure how to repurpose this with the new inputs. I already tried this:
dashAim.transform.rotation = Quaternion.Euler(new Vector3(direction.x, direction.y));
but it didn’t do anything. Does anyone know how I can do this? Here’s the code i’m using for the inputs, thanks to @Hellium
// To be called instead of the Dash function when adding the listener
public void ReadMouseInput(InputAction.CallbackContext context)
{
Vector2 mousePosition = context.ReadValue<Vector2>();
Vector3 mousePosition3 = mousePosition;
Vector3 direction = (mousePosition3 - camera.WorldToScreenPoint(rb.transform.position)).normalized;
Dash(new Vector2(direction.x, direction.y));
}
// Callback of the Left Stick
public void ReadStick(InputAction.CallbackContext context)
{
Vector2 stickDirection = context.ReadValue<Vector2>().normalized;
Dash(new Vector2(stickDirection.x, stickDirection.y));
}
I’d really appreciate any help with this. Thanks!