像扫射跳跃一样实现源代码

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

尝试在我正在从事的项目中实施扫射跳跃,我的目标是类似于 CS:S 和/或 CS:GO 类型的运动。我查看了旧的 Quake 代码并将其移植到 THREE.js,它像 Quake 运动一样工作,但你不能像在 CS:S 和 CS:GO 中那样以小角度扫射。我可以从这段代码中更改什么以使其更像我想要的?

// my approach in pseudocode

function accel(wishdir, vel, delta) {
    vel = friction(vel, delta)

    current_speed = dot(vel, wishdir)
    
    add_speed = ACCEL - current_speed

    add_speed = clamp(add_speed, 0, MAX_ACCEL * delta)

    return vel + wishdir * add_speed
}

function air_accel(wishdir, vel, delta) {
    current_speed = dot(vel, wishdir)
    
    add_speed = AIR_ACCEL - current_speed

    add_speed = clamp(add_speed, 0, MAX_AIR_ACCEL * delta)

    return vel + wishdir * add_speed
}
javascript three.js game-physics game-engine game-development
1个回答
0
投票

您可以对代码进行一些更改,使其更像 CS:S 和 CS:GO 运动:

修改加速度计算以包括玩家的移动方向和速度。在 CS:S 和 CS:GO 中,玩家通过在跳跃时沿对角线方向移动来提高速度。您可以通过使用移动方向和玩家当前速度的叉积来获得垂直于两者的向量来实现此目的。然后,您可以在应用加速之前使用此向量修改 wishdir 向量。

调整空气加速度,以便在空中更好地控制。在 CS:S 和 CS:GO 中,玩家可以使用空中扫射在跳跃时更轻松地改变方向。您可以通过在所需方向上应用少量加速度允许玩家在半空中改变方向来实现空中扫射。

实施兔子跳跃。兔子跳跃是 CS:S 和 CS:GO 中使用的一种技术,通过反复跳跃来保持速度。要实现兔子跳跃,您可以添加一个检查以查看玩家是否重复跳跃并相应地提高他们的速度。

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