欢迎光临散文网 会员登陆 & 注册

关于跳跃手感的解决

2023-02-22 18:39 作者:WonderFF1  | 我要投稿

角色跳跃功能一直是RPG游戏的核心玩法,不同机器每秒的执行帧数是不相同的,配置越高的机器每秒执行的帧数越高。在Unity中,为了兼容不同配置的机器,提供了两个函数UpdataFixedUpdataUpdata函数每一帧被调用一次,这也就导致了低配机器每秒的调用次数不足,使得操作不灵敏。FixedUpdata固定每0.02秒执行一次,可以很好的兼顾各种配置的机器。这样就引出了一个常用的解决办法,虽然低配机器Updata执行次数不足,但是不是固定执行,所以Updata函数中可以马上获得玩家按下按键的操作。Unity手册中也明确指出了Input.GetButtonInput.GetButtonDown这类有关于按键检测的函数需要放在Updata中去执行,这样能够得到实时的反馈。而所有与物理效果有关的仿真模拟需要放在FixedUpdata中执行,因为物体移动需要持续稳定的推力,对执行频率更加敏感,所以在这个项目中,需要先在Updata中获得按键信息,再去FixedUpdata中执行代码,以此获得较好的跳跃手感。例如:

Update()

{

      if(Input.GetButtonDown("Jump"))

            jumpPressed = true;

}

FixedUpdate()

{

       if(jumpPressed = true)

            DoubleJump();

}

这样当玩家按下跳跃键时,先会执行Updata获取已经按下跳跃键的信息,然后固定执行FixedUpdata,达到几乎无延迟的跳跃效果。这也是实现帧同步的关键步骤。但是这个方案也并不完美,因接收频率过高或者过低时,固定执行的FixedUpdata可能会出现响应多次或者响应过少的情况,本人做到这一步已经完美解决跳跃手感问题,故没有进行下一步研究改进。

关于跳跃手感的解决的评论 (共 条)

分享到微博请遵守国家法律