# Find the difference between the Z rotation of two GameObjects

I have two 2D GameObjects, which I will call A and B. I want to be able to detect if the difference between A.transform.localEulerAngles.z and B.transform.localEulerAngles.z is less than 30 degrees via script. I tried finding the absolute difference between the rotations and using Mathf.DeltaAngle but for some reason those don’t appear to work. Should those methods work and I am just implementing them incorrectly? Keep in mind that I want the difference between euler angles and not an axis of a quaternion.

I figured it out, by using Quaternion.Angle for anyone else who has this problem:

``````if (Quaternion.Angle (transform.rotation, B.transform.rotation) < 15) {
// do stuff!
}
``````

You can try a pseudo code here:

``````    Transform positionA;
Transform positionB;

float anglesNow1;
float anglesNow2;
float anglesLimit;
float anglesSpeed;
float anglesDesired1;
float anglesDesired2;
float anglesCalc;

//Checking Angle 1
if (Input.GetAxis("Horizontal") > 0)

{
anglesDesired1 += anglesCalc;
}

if (Input.GetAxis("Horizontal") < 0)

{
anglesDesired1 -= anglesCalc;
}

if (Input.GetAxis("Horizontal") == 0) //You can disable this check for fixed positions!

{
anglesDesired1 = anglesCalc;
}

anglesNow1 = Mathf.SmoothDamp(anglesNow1, anglesDesired1, ref anglesSpeed, anglesLimit);

//Checking Angle 2
if (Input.GetAxis("Vertical") > 0)

{
anglesDesired2 += anglesCalc;
}

if (Input.GetAxis("vertical") < 0)

{
anglesDesired2 -= anglesCalc;
}

if (Input.GetAxis("vertical") == 0) //You can disable this check for fixed positions!

{
anglesDesired2 = anglesCalc;
}

anglesNow2 = Mathf.SmoothDamp(anglesNow2, anglesDesired2, ref anglesSpeed, anglesLimit);

//Now checking the real angles that inputs are on this moment.

If(anglesNow1 >= 31 && anglesNow2 >= 31) {

Debug.Log("Angles 1 and 2 are not synchronized, but both in high angles");
}

If(anglesNow1 == 30 && anglesNow2 == 30) {

Debug.Log("Angles 1 and 2 are synchronized, both in the desired angle");
}

If(anglesNow1 == 30 && anglesNow2 != 30) {

Debug.Log("Angles 1 are synchronized, but angle 2 are not!");
}

If(anglesNow1 != 30 && anglesNow2 == 30) {

Debug.Log("Angles 2 are synchronized, but angle 1 are not!");
}

If(anglesNow1 <= 29 && anglesNow2 <= 29) {

Debug.Log("Angles 1 and 2 are not synchronized, but both in low angles");
}

I use SmoothClamp to keep some axis value without to reach till the limit. If i use Lerp i cant control it till reach the maximum angle. When i stop to give input signals, the values will return to zero. You can disable if want fixed positions. Let me know if you fixed your issue! I hope it could helps you! See you, @Nobozarb!
``````