void start ()
{
targetpl1 = GameObject.FindGameObjectWithTag(Tagii1).GetComponent<Transform>();
}
void FixedUpdate()
{
rotatZ = gameObject.transform.rotation.z * 180; //вращение объекта в градусах
//слежение за копами
targetPos1 = targetpl1.position; //позиция копов
targetPos1.x = targetPos1.x - thisPos.x;
targetPos1.y = targetPos1.y - thisPos.y;
angleii1 = Mathf.Atan2(targetPos1.y, targetPos1.x) * Mathf.Rad2Deg;
// если коп в коллайдере
if (IsTriggerCops)
{
if (rotatZ > 0 && angleii1 > 0)
{
if (rotatZ > angleii1 && rotatZ <= angleii1 + 90)
{
gameObject.transform.rotation = Quaternion.Lerp(gameObject.transform.rotation, Quaternion.AngleAxis(Mathf.Atan2(-targetPos1.y, -targetPos1.x) * Mathf.Rad2Deg, Vector3.forward), 0.05f);
}
else if (rotatZ < angleii1 && rotatZ >= angleii1 - 90)
{
gameObject.transform.rotation = Quaternion.Lerp(gameObject.transform.rotation, Quaternion.AngleAxis(Mathf.Atan2(-targetPos1.y, -targetPos1.x) * Mathf.Rad2Deg, Vector3.forward), 0.05f);
}
}
if (rotatZ < 0 && angleii1 < 0)
{
if (rotatZ > angleii1 && rotatZ <= angleii1 + 90)
{
gameObject.transform.rotation = Quaternion.Lerp(gameObject.transform.rotation, Quaternion.AngleAxis(Mathf.Atan2(-targetPos1.y, -targetPos1.x) * Mathf.Rad2Deg, Vector3.forward), 0.05f);
}
else if (rotatZ < angleii1 && rotatZ >= angleii1 - 90)
{
gameObject.transform.rotation = Quaternion.Lerp(gameObject.transform.rotation, Quaternion.AngleAxis(Mathf.Atan2(-targetPos1.y, -targetPos1.x) * Mathf.Rad2Deg, Vector3.forward), 0.05f);
}
}
else if (rotatZ > angleii1 + 90 || rotatZ < angleii1 - 90)
{
gameObject.transform.rotation = Quaternion.Lerp(gameObject.transform.rotation, TurretRotation(), SpeedRotation);
}
}
else
{
gameObject.transform.rotation = Quaternion.Lerp(gameObject.transform.rotation, TurretRotation(), SpeedRotation);
}
}
Quaternion TurretRotation()
{
//слежение за игроком
targetPos = targetpl.position;
thisPos = transform.position;
targetPos.x = targetPos.x - thisPos.x;
targetPos.y = targetPos.y - thisPos.y;
angleii = Mathf.Atan2(targetPos.y, targetPos.x) * Mathf.Rad2Deg;
return Quaternion.AngleAxis(angleii, Vector3.forward);
}
public void OnTriggerEnter2D(Collider2D other)
{
if (other.gameObject.tag == "Cops")
{
IsTriggerCops = true;
}
}
public void OnTriggerExit2D(Collider2D other)
{
if (other.gameObject.tag == "Cops")
{
IsTriggerCops = false;
}
}