rad_to_deg
2026/4/14大约 4 分钟
最后同步日期:2026-04-15 | Godot 官方原文 — rad_to_deg
rad_to_deg
定义
rad_to_deg() 用来把"弧度"换算成"角度"——简单说,就是把计算机三角函数返回的弧度值翻译成人类更容易理解的度数。
和 deg_to_rad() 正好相反:如果说 deg_to_rad() 是把"中文"翻译成"英文"让计算机听懂,那 rad_to_deg() 就是把"英文"翻译回"中文"让你看懂。比如计算机告诉你某个角度是 1.5708 弧度,你可能没什么概念,但如果告诉你那是 90 度,你立刻就明白了。
什么时候需要它? 当你调用 Godot 的三角函数(如 Atan2())或者读取 Rotation 属性时,得到的都是弧度值。如果你想在界面上显示"你旋转了 45 度"这样的文字,或者用 Debug 日志打印一个人类能读懂的角度,就需要先用 rad_to_deg() 转换一下。
数学公式为:角度 = 弧度 x (180 / pi)。
函数签名
C#
public static float RadToDeg(float rad)GDScript
func rad_to_deg(rad: float) -> float参数说明
| 参数 | 类型 | 必需 | 说明 |
|---|---|---|---|
rad | float | 是 | 要转换的弧度值。例如 1.5708 约等于 90 度,3.14159 约等于 180 度 |
返回值
float —— 对应的角度值。计算公式为 rad * (180 / Math.PI)。
常见的换算结果:
rad_to_deg(0)返回0.0rad_to_deg(1.5708)返回约90.0(即 pi/2 弧度 = 90 度)rad_to_deg(3.14159)返回约180.0(即 pi 弧度 = 180 度)rad_to_deg(6.28318)返回约360.0(即 2*pi 弧度 = 360 度)
代码示例
基础用法:弧度转角度
C#
using Godot;
public partial class RadToDegExample : Node
{
public override void _Ready()
{
// 常见弧度转换为角度
float d0 = Mathf.RadToDeg(0f);
GD.Print($"0 弧度 = {d0} 度");
// 运行结果: 0 弧度 = 0 度
float d90 = Mathf.RadToDeg(Mathf.Pi / 2f);
GD.Print($"pi/2 弧度 = {d90} 度");
// 运行结果: pi/2 弧度 = 90 度
float d180 = Mathf.RadToDeg(Mathf.Pi);
GD.Print($"pi 弧度 = {d180} 度");
// 运行结果: pi 弧度 = 180 度
float d360 = Mathf.RadToDeg(2f * Mathf.Pi);
GD.Print($"2*pi 弧度 = {d360} 度");
// 运行结果: 2*pi 弧度 = 360 度
}
}GDScript
func _ready():
# 常见弧度转换为角度
var d0 = rad_to_deg(0.0)
print("0 弧度 = %f 度" % d0)
# 运行结果: 0 弧度 = 0.000000 度
var d90 = rad_to_deg(PI / 2.0)
print("pi/2 弧度 = %f 度" % d90)
# 运行结果: pi/2 弧度 = 90.000000 度
var d180 = rad_to_deg(PI)
print("pi 弧度 = %f 度" % d180)
# 运行结果: pi 弧度 = 180.000000 度
var d360 = rad_to_deg(2.0 * PI)
print("2*pi 弧度 = %f 度" % d360)
# 运行结果: 2*pi 弧度 = 360.000000 度实际场景:用 Atan2 计算朝向角度并显示
C#
using Godot;
public partial class AimAngleDisplay : Node2D
{
public override void _Ready()
{
// 模拟:从原点到目标点 (3, 4) 的方向
Vector2 target = new Vector2(3f, 4f);
// Atan2 返回弧度值
float angleRad = Mathf.Atan2(target.Y, target.X);
// 转换为角度,方便在 UI 上显示
float angleDeg = Mathf.RadToDeg(angleRad);
GD.Print($"目标方向角度: {angleDeg:F1} 度");
// 运行结果: 目标方向角度: 53.1 度
}
}GDScript
extends Node2D
func _ready():
# 模拟:从原点到目标点 (3, 4) 的方向
var target = Vector2(3.0, 4.0)
# atan2 返回弧度值
var angle_rad = atan2(target.y, target.x)
# 转换为角度,方便在 UI 上显示
var angle_deg = rad_to_deg(angle_rad)
print("目标方向角度: %.1f 度" % angle_deg)
# 运行结果: 目标方向角度: 53.1 度进阶用法:读取节点旋转并在 UI 上显示
C#
using Godot;
public partial class RotationDebugDisplay : Node2D
{
private Label _angleLabel;
public override void _Ready()
{
_angleLabel = GetNode<Label>("AngleLabel");
}
public override void _Process(double delta)
{
// 持续旋转(弧度制)
Rotation += 1.0f * (float)delta;
// 把当前弧度旋转转换为角度,显示在 UI 上
float angleDeg = Mathf.RadToDeg(Rotation);
_angleLabel.Text = $"旋转角度: {angleDeg:F1} 度";
GD.Print($"Rotation(弧度): {Rotation:F4}, 角度: {angleDeg:F1} 度");
// 运行结果: Rotation(弧度): 1.5708, 角度: 90.0 度
}
}GDScript
extends Node2D
var _angle_label: Label
func _ready():
_angle_label = get_node("AngleLabel")
func _process(delta):
# 持续旋转(弧度制)
rotation += 1.0 * delta
# 把当前弧度旋转转换为角度,显示在 UI 上
var angle_deg = rad_to_deg(rotation)
_angle_label.text = "旋转角度: %.1f 度" % angle_deg
print("Rotation(弧度): %.4f, 角度: %.1f 度" % [rotation, angle_deg])
# 运行结果: Rotation(弧度): 1.5708, 角度: 90.0 度注意事项
- Godot 中
Rotation和RotationDegrees的区别:Rotation属性以弧度为单位,RotationDegrees属性以角度为单位。如果你只是想读取或设置旋转角度,可以直接使用RotationDegrees而不需要手动调用rad_to_deg()。 - 与
deg_to_rad()是一对反函数:rad_to_deg()和deg_to_rad()互为逆运算。rad_to_deg(deg_to_rad(x))的结果等于x。 - 弧度值可以是负数或超过 2*pi:
rad_to_deg()对输入值没有范围限制。rad_to_deg(-1.5708)返回约-90,rad_to_deg(12.5664)返回约720(即两圈)。 - 在 C# 中也可以使用
Mathf.RadiansToDegrees:这是 Godot 4.x 提供的别名方法,与RadToDeg功能完全相同。 - 调试时建议转角度:在 Debug 日志中打印弧度值往往不太直观,养成习惯用
rad_to_deg()转换后再打印,调试效率会高很多。
