//Called on fixedupdate public override void PlayerUpdate(PlyMoveInput input, float dt) { if (grounded) { if (GetButtonDown(input.bts[JumpBt])) { AddGravitySelf(-PlyGravity.gravNorm * 2.5f * mvSpd); lastDir = input.dir; } else if (GetButtonDown(input.bts[DashBt])) { AddImpulseSelf(input.dir.normalized * 4 * mvSpd, 8 * mvSpd); } else { Move(input.dir * mvSpd * dt); } } else { Move(lastDir * mvSpd * dt); } if (input.dir != Vector3.zero) { transform.rotation = Quaternion.RotateTowards(transform.rotation, Quaternion.LookRotation(input.dir.normalized), angularSpeed * dt); } }
void PlayerUpdate(PlyMoveInput input, float dt) { UpdateGround(); if (grounded) { if (input.jumpBt == 1) { tempGrav += -PlyGravity.gravNorm * 2 * mvSpd; lastDir = input.dir; } else if (input.dashBt == 1) { tempImpulse += input.dir * 4 * mvSpd; tempImpulseDeccel += 8 * mvSpd; } else { cc.Move(input.dir * mvSpd * dt); } } else { cc.Move(lastDir * mvSpd * dt); } }
public static PlyMoveInput CopyFromInput(PlyMoveInput parent) { return(new PlyMoveInput(parent.dir, parent.jumpBt, parent.dashBt, parent.skillBt, parent.dt, parent.accResDeltaPos, parent.rot, parent.deltaGrav, parent.impulseId, parent.gravId, parent.accTimeSinceUngrounded, parent.curPos, parent.state)); }
void LateUpdate() { if (isLocalPlayer) { if (!isServer) { if (plyMoveCorrection != Vector3.zero) { Vector3 tempPos2 = transform.position; Vector3 lerpPos = Vector3.Lerp(Vector3.zero, plyMoveCorrection, 2 * Time.deltaTime); cc.Move(lerpPos); plyMoveCorrection -= transform.position - tempPos2; } } Vector3 curPos = transform.position; PlayerUpdate(myInput, Time.deltaTime); myInput.deltaGrav = tempGrav; AddGravity(tempGrav); AddImpulse(tempImpulse, tempImpulseDeccel, true); myInput.accResDeltaPos = transform.position - curPos; myInput.rot = transform.rotation; myInput.curPos = transform.position; myInput.state = state; if (isServer) { } else { if (sameInput) { if (CheckInput2()) { int last = inputs.Count - 1; inputs [last].dt += Time.deltaTime; inputs [last].accResDeltaPos += myInput.accResDeltaPos; inputs [last].rot = myInput.rot; inputs [last].curPos = myInput.curPos; } else { sameInput = false; } } if (!sameInput) { inputs.Add(PlyMoveInput.CopyFromInput(myInput)); SetPrevInput(); SetPrevInput2(); } } } else { if (isServer) { } } UpdateImpulse(); UpdateGravity(); //gravity update done very last to respect latency }
void PlayerUpdate(PlyMoveInput input) { PlayerUpdate(input, input.dt); }