- Home /
How do I make the character look at the mouse?
So, i want to make the character to look where the mouse is pointing
Here is my code
scoop.transform.position = new Vector3(targetScopePosition.x, targetScopePosition.y, scoop.transform.position.z);
//angle tracker
v3Pos = Input.mousePosition;
v3Pos.z = nuggetsPrefab.transform.position.z - Camera.main.transform.position.z;
v3Pos = Camera.main.ScreenToWorldPoint(v3Pos);
v3Pos -= scoop.transform.position;
fAngle = Mathf.Atan2(v3Pos.y, v3Pos.x) * Mathf.Rad2Deg;
if (fAngle < 0.0f)
{
fAngle += 360.0f;
}
Debug.Log (fAngle);
//45º right*
if (fAngle >= 198f && fAngle <= 234f)
{
gameObject.GetComponent<Animator>().SetBool("45", true);
gameObject.GetComponent<Animator>().SetBool("up", false);
gameObject.GetComponent<Animator>().SetBool("facingRight", true);
gameObject.GetComponent<Animator>().SetBool("down", false);
}
//right*
if (fAngle >= 162f && fAngle <= 198f)
{
gameObject.GetComponent<Animator>().SetBool("45", false);
gameObject.GetComponent<Animator>().SetBool("up", false);
gameObject.GetComponent<Animator>().SetBool("facingRight", true);
gameObject.GetComponent<Animator>().SetBool("down", false);
}
//rightdown*
if (fAngle >= 126f && fAngle <= 162f)
{
gameObject.GetComponent<Animator>().SetBool("45", false);
gameObject.GetComponent<Animator>().SetBool("up", false);
gameObject.GetComponent<Animator>().SetBool("facingRight", true);
gameObject.GetComponent<Animator>().SetBool("down", true);
}
//rightup*
if (fAngle >= 234f && fAngle <= 270f)
{
gameObject.GetComponent<Animator>().SetBool("up", true);
gameObject.GetComponent<Animator>().SetBool("45", false);
gameObject.GetComponent<Animator>().SetBool("facingRight", true);
gameObject.GetComponent<Animator>().SetBool("down", false);
}
//upleft*
if (fAngle >= 270f && fAngle <= 306f)
{
gameObject.GetComponent<Animator>().SetBool("up", true);
gameObject.GetComponent<Animator>().SetBool("45", false);
gameObject.GetComponent<Animator>().SetBool("facingRight", false);
gameObject.GetComponent<Animator>().SetBool("down", false);
}
//downleft*
if (fAngle >= 18f && fAngle <= 54f)
{
gameObject.GetComponent<Animator>().SetBool("45", false);
gameObject.GetComponent<Animator>().SetBool("up", false);
gameObject.GetComponent<Animator>().SetBool("facingRight", false);
gameObject.GetComponent<Animator>().SetBool("down", true);
}
//left*
if (fAngle >= 342f || fAngle <= 18f)
{
gameObject.GetComponent<Animator>().SetBool("45", false);
gameObject.GetComponent<Animator>().SetBool("up", false);
gameObject.GetComponent<Animator>().SetBool("facingRight", false);
gameObject.GetComponent<Animator>().SetBool("down", false);
}
//45º left*
if (fAngle >= 306f && fAngle <= 342f)
{
gameObject.GetComponent<Animator>().SetBool("45", true);
gameObject.GetComponent<Animator>().SetBool("up", false);
gameObject.GetComponent<Animator>().SetBool("facingRight", false);
gameObject.GetComponent<Animator>().SetBool("down", false);
}
The problem with this code is that, it only works when the chicken is centered in the screen(spoiler, i dont want the chicken to be centered, I want lazy scrolling(the camera only moves if the player is far enough), but i got that figured out)
Just for clarification, the mouse is not visible and its locked in the center of the screen
Comment
Your answer
Follow this Question
Related Questions
Rotation offset help! 0 Answers
Flip 2D Character with Keys without moving 2 Answers
How would I do customizable characters in my game? (2D) 0 Answers
2D character bounce off wall / shakes while walking into it 3 Answers
Looking at target in 2D 1 Answer