Hello, i've got question about handling server side events with client side prediction. I've got something like server side hit where server adds "delta force" to the CSP code. Problem is jittery result when player receive hit from the server. I'll post code below.
Hitbox code
private void LaunchCharacter(Vector3 hitNormal)
{
Vector3 hitDirection = -new Vector3(hitNormal.x, 0f, hitNormal.z);
Vector3 upForce = Vector3.up * _upPushScalar;
Vector3 forwardForce = hitDirection * _forwardPushScalar;
Vector3 hitForce = forwardForce + upForce;
_playerStateMachine.CacheDeltaForce(hitForce);
}
public void RequestHit()
{
PreciseTick preciseTick = TimeManager.GetPreciseTick(TickType.LastPacketTick);
ServerHit(preciseTick);
}
[ServerRpc]
private void ServerHit(PreciseTick preciseTick)
{
RollbackManager.Rollback(preciseTick, RollbackManager.PhysicsType.ThreeDimensional, IsOwner);
int mask = 1 << LayerMask.NameToLayer("HitBox");
Transform t = transform;
if(Physics.Raycast(t.position, t.forward, out RaycastHit hit, 1f, mask))
{
if (hit.collider.TryGetComponent(out CombatModule combatModule))
{
combatModule.LaunchCharacter(hit.normal);
}
}
RollbackManager.Return();
}