Note that the way you’ve drawn your vectors it’s not clear where they start in space. Vectors generally start at 0,0.
“Between two vectors” can also be interpreted in multiple ways. It could mean either between the smaller angle of the vectors or between the larger angle of the two vectors. If you always want to know if it’s in the smaller angled region just do
float angleArea = Vector3.Angle(V1, V2);
if (Vector3.Angle(V1, P) < angleArea && Vector3.Angle(V2,P) < angleArea)
{
// P is inside the area between V1 and V2
}
This assumes that vectors V1, V2 and P actually start at the same point (0,0). If you you have V1 and V2 already as direction vectors but have the point P in world coordinates you have to subract the starting point from P
If you want to know if it’s in the larger area, just inverse the condition like this:
if (Vector3.Angle(V1, P) > angleArea || Vector3.Angle(V2,P) > angleArea)
or this
if (!(Vector3.Angle(V1, P) < angleArea && Vector3.Angle(V2,P) < angleArea))
Besides those two interpretations it’s also possible to define an area that always starts at the first vector (for example the one that’s pointing up) and the area always expands counter clockwise (or clockwise) to the second vector you would do something like this:
float range = Vector3.SignedAngle(V1, V2, Vector3.forward);
if (range < 0)
range += 360f;
float a1 = Vector3.SignedAngle(V1, P, Vector3.forward);
if (a1 < 0)
a1 += 360f;
float a2 = Vector3.SignedAngle(P, V2, Vector3.forward);
if (a2 < 0)
a2 += 360f;
if (a1 < range && a1 < range)
{
// P is between V1 and V2
}
Note that this second solution depends on the order you use V1 and V2. If you swap the two vectors you essentially test for the opposite area. While the first solution works in any arbitrary 2d plane in 3d space, this solution assumes the x-y plane (since we use Vector3.forward as reference normal).