예제 #1
0
    // Gives angle between 2 points.
    // Unlike Vector3.Angle that gives angle between vectors
    // Result is between -180..180 or 0..360
    // self + Vector.forward is angle 0
    // self + Vector.backward is angle 180
    private static float AngleFromForward(this Vector3 self, Vector3 other, AngleDomain resultDomain = AngleDomain.From0To360)
    {
        float angle = Mathf.Atan2(other.x - self.x, other.z - self.z) * Mathf.Rad2Deg;

        if (resultDomain == AngleDomain.From0To360)
        {
            if (angle < 0)
            {
                angle += 360;
            }
        }
        return(angle);
    }
예제 #2
0
 // Gives angle between 2 points.
 // Unlike Vector3.Angle that gives angle between vectors
 // Result is between -180..180 or 0..360
 // self + Vector.up is angle 0
 // self + Vector.down is angle 180
 private static float AngleFromUp( this Vector3 self, Vector3 other, AngleDomain resultDomain = AngleDomain.From0To360 )
 {
     float angle = Mathf.Atan2 ( other.x - self.x, other.y - self.y ) * Mathf.Rad2Deg;
     if ( resultDomain == AngleDomain.From0To360 )
         if ( angle < 0 )
             angle += 360;
     return angle;
 }
예제 #3
0
 public static float AngleFromForward(this Vector3 self, AngleDomain resultDomain = AngleDomain.From0To360)
 {
     return(Vector3.zero.AngleFromForward(self, resultDomain));
 }
예제 #4
0
 // 	public static float AngleFromUp ( this Vector3 self, AngleDomain resultDomain = AngleDomain.From0To360 )
 // 	{
 // 		return Vector2.zero.Angle ( self, resultDomain );
 // 	}
 // Gives angle of this vector around up vector (Z).
 // Unlike Vector3.Angle that gives angle between vectors
 // Result is between -180..180 or 0..360
 // self + Vector.up is angle 0
 // self + Vector.down is angle 180
 public static float AngleFromUp( this Vector3 self, AngleDomain resultDomain = AngleDomain.From0To360 )
 {
     return Vector3.zero.AngleFromUp ( self, resultDomain );
 }