- Home /
my enemy isn't looking at the player in 2d
i'm trying to make a piranha that follows the player and i'm using a rotateScript for it to look at the player but when i try to set the coordinates for the piranha to look at the player it doesn't set it
this is the piranhas code to set the target : Rotate = GetComponent();
PiranhaAnim = GetComponent<Animator>();
SeenPlayer = Physics2D.OverlapCircle(transform.position, CheckRadius, WhatIsPlayer);
if (SeenPlayer == false)
{
transform.position = Vector2.MoveTowards(transform.position, MovePositions[MovingToPatrolPoint].position, PatrolSpeed * Time.deltaTime);
Rotate.target = MovePositions[MovingToPatrolPoint];
PiranhaAnim.SetBool("Angry", false);
check = true;
Vector3 eulerRotation = transform.rotation.eulerAngles;
transform.rotation = Quaternion.Euler(eulerRotation.x, eulerRotation.y, 0);
}
else if (SeenPlayer == true) {
transform.position = Vector2.MoveTowards(transform.position, PlayerPosition.position, AttackSpeed * Time.deltaTime);
Rotate.target = PlayerPosition;
PiranhaAnim.SetBool("Angry", true);
check = false;
}
and heres my rotatetowardsScript :
public float speed; public float MinusRot;
public Transform target;
// Update is called once per frame
void Update()
{
Vector3 dir = target.position - transform.position;
float angle = Mathf.Atan2(dir.y,dir.x) * Mathf.Rad2Deg;
transform.rotation = Quaternion.AngleAxis(angle - MinusRot, Vector3.forward);
}
Answer by cdr9042 · Feb 01, 2021 at 04:39 AM
Here's how I did it.
Vector3 initialDirection = Vector3.right; //the direction the gun points to at the beginning
Vector3 aimDirection = TargetPosition - GunPosition;
float angleDif = Vector2.SignedAngle(aimDirection, currentGunDirection);
currentGunDirection= Quaternion.AngleAxis(Mathf.Min(rotateSpeed, Mathf.Abs(angleDif)) * Mathf.Sign(angleDif), -Vector3.forward) * currentGunDirection;
transform.rotation = Quaternion.AngleAxis(Vector2.SignedAngle(currentGunDirection, initialDirection), -Vector3.forward);
https://answers.unity.com/questions/1774061/2d-version-of-vector3rotatetowards.html
@cdr9042 huh I should have told you that the target wasn't getting set to the player
Your answer
![](https://koobas.hobune.stream/wayback/20220613024331im_/https://answers.unity.com/themes/thub/images/avi.jpg)
Follow this Question
Related Questions
I want to rotate the model to face player, not bend? 1 Answer
Rotate object around player when space is pressed. 1 Answer
Enemy rotates when hits wall 0 Answers
LookAt once 0 Answers
JS Enemy Angle Rotation Follow 1 Answer