【发布时间】:2020-09-09 07:30:54
【问题描述】:
我已经以这样一种方式实现了我的玩家移动,在您松开跳跃按钮并再次按下它之前,您无法再次跳跃。出于某种原因,我的角色有时会在严格按住按钮时随机跳跃。它是完全随机的,只是偶尔发生,当它发生时,它最终只是随机停止,所有这些都没有释放跳跃按钮或按下其他任何东西。
我已经把它缩小到我的 PlayerMovement 脚本,它处理输入并将其发送到角色控制器,整个脚本如下:
public class PlayerMovement : MonoBehaviour
{
public CharacterController controller;
public Animator animator;
private float horizontalMove = 0f;
private bool jump = false;
private bool dash = false;
private void Update() {
horizontalMove = Input.GetAxisRaw("Horizontal");
if (Input.GetButton("Jump")) {
jump = true;
}
if (Input.GetButtonDown("Dash")) {
dash = true;
}
}
private void FixedUpdate() {
controller.Move(horizontalMove, jump, dash);
jump = false;
dash = false;
}
}
使用各种调试跟踪,似乎问题出在 FixedUpdate() 函数中。 Update() 中的input.getbutton 为跳转按钮返回正确的“真”值,即使角色跳跃不规律也是如此。同时在 fixedUpdate 中打印 jump first thing 的值偶尔会给出随机错误。
我的下一个猜测是,在调用 update() 之前,有时可能会多次调用 fixedUpdate,导致这些值为 false,但我创建了更多跟踪来检测何时两次调用 fixedUpdate,它只发生了一次启动时几次(在正常播放期间以 2k+fps 运行),而在发生跳跃问题时根本没有。
有什么想法吗?
【问题讨论】: