我正在编写一个带有自上而下视图的2D视频游戏。在这个游戏中我使用的是手电筒。问题是我找到的唯一教程是3D,我很难将代码转换为2D。
public class Lightning : MonoBehaviour
{
[Header("Light")]
public float ViewRadius;
public float ViewAngle;
public Vector3 DirfromAngle(float angle)
{
return new Vector3(Mathf.Sin(angle * Mathf.Deg2Rad),0, Mathf.Cos(angle * Mathf.Deg2Rad));
}
}
这是3D中的代码,将其转换为2D时我有
public class Lightning : MonoBehaviour
{
[Header("Light")]
public float ViewRadius;
public float ViewAngle;
public Vector2 DirfromAngle(float angle)
{
return new Vector2(Mathf.Sin(angle * Mathf.Deg2Rad), Mathf.Cos(angle * Mathf.Deg2Rad));
}
}
我正在使用Unity Editor可视化我的半径:3D:
[CustomEditor(typeof(Lightning))]
public class FieldofViewEditor : Editor {
void OnSceneGUI()
{
Lightning fow = (Lightning)target;
Handles.color = Color.white;
Handles.DrawWireArc(fow.transform.position, Vector3.up,Vector3.forward,
360, fow.ViewRadius);
}
}
和2D:
[CustomEditor(typeof(Lightning))]
public class FieldofViewEditor : Editor {
void OnSceneGUI()
{
Lightning fow = (Lightning)target;
Handles.color = Color.white;
Handles.DrawWireArc(fow.transform.position,
Vector2.up,Vector2.left, 360, fow.ViewRadius);
}
}
当我在游戏中拥有它时,我只有一条线而不是半径,我假设它是由于它是错误的坐标或我弄乱了窦或余弦。
答案 0 :(得分:0)
如果你俯视xy平面,你希望弧的法线朝向摄像机,现在你的法线正在y轴上,这意味着你的弧是在xz平面上绘制的。如果将相机切换到3d,则可能会看到弧形。要在x-y平面绘制圆弧,您应该执行:
Handles.DrawWireArc(fow.transform.position,
Vector3.back,Vector2.left, 360, fow.ViewRadius);