Godot 3D 相机控制脚本:旋转和缩放
这个 Godot 脚本使用鼠标控制 3D 相机进行旋转和缩放。
var mouse_sensitivity = 0.1
var zoom_sensitivity = 0.1
var max_zoom_distance = 10
var min_zoom_distance = 1
var mouse_position = Vector2.ZERO
var zoom_distance = 5
func _process(delta):
# 获取鼠标移动的距离
var mouse_delta = get_viewport().get_mouse_position() - mouse_position
# 将鼠标移动距离乘以灵敏度
mouse_delta *= mouse_sensitivity
# 绕 Y 轴旋转
rotate_y(deg_to_rad(-mouse_delta.x))
# 绕 X 轴旋转
rotate_x(deg_to_rad(-mouse_delta.y))
# 更新鼠标位置
mouse_position = get_viewport().get_mouse_position()
# 获取缩放输入
var zoom_delta = Input.get_action_strength('zoom_in') - Input.get_action_strength('zoom_out')
# 更新缩放距离
zoom_distance -= zoom_delta * zoom_sensitivity
# 限制缩放距离范围
zoom_distance = clamp(zoom_distance, min_zoom_distance, max_zoom_distance)
# 设置相机位置
set_global_transform(Transform3D(Basis(), Vector3(0, 0, -zoom_distance)))
var mouse_speed = 1
func _input(event):
if event is InputEventMouseMotion:
# 绕 Y 轴旋转
rotate_y(deg_to_rad(-event.relative_x * mouse_speed))
# 绕 X 轴旋转
rotate_x(deg_to_rad(-event.relative_y * mouse_speed))
这个脚本使用 _process 函数来处理鼠标移动和缩放操作。它使用 get_viewport().get_mouse_position() 获取鼠标当前位置,并使用 rotate_x 和 rotate_y 函数来旋转相机。它使用 Input.get_action_strength 获取缩放输入,并使用 clamp 函数来限制缩放距离范围。
使用说明
- 创建一个
Camera3D节点。 - 将这个脚本附加到
Camera3D节点。 - 在项目设置中添加两个输入动作:
zoom_in和zoom_out。 - 运行项目并使用鼠标移动和缩放相机。
注意
- 脚本中的
mouse_sensitivity和zoom_sensitivity参数控制鼠标移动和缩放的速度。 max_zoom_distance和min_zoom_distance参数控制缩放距离范围。- 您可以在
_input函数中添加更多鼠标事件处理,例如点击事件。
其他提示
- 您可以在
_ready函数中初始化相机的位置和方向。 - 您还可以使用
look_at函数来让相机指向特定目标。 - 您可以使用
get_global_transform和set_global_transform函数来获取和设置相机的全局变换矩阵。
希望这些信息能帮助您使用这个脚本控制 3D 相机。如果您遇到任何问题,请随时提问。
原文地址: https://www.cveoy.top/t/topic/oTEi 著作权归作者所有。请勿转载和采集!