如何让godot4第三人称相机不翻转到顶部

问题描述 投票:0回答:1

我正在godot4中制作第三人称游戏,当我向上拖动鼠标时,我的第三人称相机一直在翻转。我该如何制作才能让它粘在那里而不是像其他第三人称游戏那样翻转?

我现在的代码(用于玩家移动和相机):

extends RigidBody3D

@onready var horizontal_pivit = $HorizontalPivit
@onready var vertical_pivit = $HorizontalPivit/VerticalPivit

var mouse_sensitivity := 0.001
var horizontal_input := 0.0
var vertical_input := 0.0

func _ready() -> void:
   Input.set_mouse_mode(Input.MOUSE_MODE_CAPTURED)


func _process(delta) -> void:
   var input := Vector3.ZERO
   input.x = Input.get_axis("left", "right")
   input.z = Input.get_axis("forward", "backward")
   
   apply_central_force(input * 1200.0 * delta)
   
   horizontal_pivit.rotate_y(horizontal_input)
   vertical_pivit.rotate_x(vertical_input)



func _unhandled_input(event: InputEvent) -> void:
   if event is InputEventMouseMotion:
       if Input.get_mouse_mode() == Input.MOUSE_MODE_CAPTURED:
           horizontal_input = -event.relative.x * mouse_sensitivity
           vertical_input = -event.relative.y * mouse_sensitivity

我的玩家场景:

camera godot4
1个回答
0
投票

正如我在之前的答案中提到的,您想要存储角度(一个新的脚本级别变量),您想要将其包装起来,以便它始终代表排序器方式的旋转(例如,它将是负四分之一圈而不是正四分之三圈),对于垂直方向,您希望将其夹紧到最小和最大角度。现在您已经发现原因了。

由于您要存储角度,因此计算旋转并设置它是有意义的,而不是进行相对旋转。我是通过设置枢轴变换的基础来完成的。

© www.soinside.com 2019 - 2024. All rights reserved.