Вы используете устаревший браузер. Этот и другие сайты могут отображаться в нём некорректно. Вам необходимо обновить браузер или попробовать использовать другой.
Всем привет, недавно начал делать свой софт, но столкнулся с проблема гвоздит на серверах когда бьет киллаура, слышал то что нужна коррекция движения.
Я не понимаю что это как она работает и т.д. Сможете объяснить или дать код??
коррекция движения это когда ты поворачиваешь голову на врага чтобы ударить, но при этом продолжаешь бежать туда куда бежал
без неё: повернул голову → wasd теперь двигает тебя в сторону куда смотришь → тебя кидает в бок и ты тормозишь
с ней: голова повернулась, а движение пересчитывается как будто ты всё ещё смотришь вперёд
Java:
private Vec3d fixVelocity(Vec3d currVelocity, Vec3d movementInput, float speed) {
if (currentAngle != null) {
float yaw = currentAngle.getYaw(); // берём yaw ротации на врага
double d = movementInput.lengthSquared();
if (d < 1.0E-7) {
return Vec3d.ZERO;
} else {
Vec3d vec3d = (d > 1.0 ? movementInput.normalize() : movementInput).multiply(speed);
float f = MathHelper.sin(yaw * 0.017453292f);
float g = MathHelper.cos(yaw * 0.017453292f);
// пересчитываем вектор движения относительно yaw ротации
return new Vec3d(vec3d.getX() * g - vec3d.getZ() * f, vec3d.getY(), vec3d.getZ() * g + vec3d.getX() * f);
}
}
return currVelocity;
}
коррекция движения это когда ты поворачиваешь голову на врага чтобы ударить, но при этом продолжаешь бежать туда куда бежал
без неё: повернул голову → wasd теперь двигает тебя в сторону куда смотришь → тебя кидает в бок и ты тормозишь
с ней: голова повернулась, а движение пересчитывается как будто ты всё ещё смотришь вперёд
Java:
private Vec3d fixVelocity(Vec3d currVelocity, Vec3d movementInput, float speed) {
if (currentAngle != null) {
float yaw = currentAngle.getYaw(); // берём yaw ротации на врага
double d = movementInput.lengthSquared();
if (d < 1.0E-7) {
return Vec3d.ZERO;
} else {
Vec3d vec3d = (d > 1.0 ? movementInput.normalize() : movementInput).multiply(speed);
float f = MathHelper.sin(yaw * 0.017453292f);
float g = MathHelper.cos(yaw * 0.017453292f);
// пересчитываем вектор движения относительно yaw ротации
return new Vec3d(vec3d.getX() * g - vec3d.getZ() * f, vec3d.getY(), vec3d.getZ() * g + vec3d.getX() * f);
}
}
return currVelocity;
}