public void UpdateFriction(AthleteInformation information, GroundingDetector detector) { // parent = DetectedGround.transform の1行で済みそうなものだが、null.transform になった時にまずい。 if (detector.IsGrounding == false) { information.AthleteObject.transform.parent = defaultParent; return; } information.AthleteObject.transform.parent = detector.DetectedGround.transform; }
public void UpdateGravity(GroundingDetector detector) { // 接地していたらフィールドをリセットして return。 if (detector.IsGrounding) { MovementPerFrame = Vector3.zero; FloatingTime = 0.00f; return; } // 接地していない場合、移動量を計算する。 FloatingTime += Time.deltaTime; float currentSpeed = GravityAccel * FloatingTime; // 加速度*経過時間=この時点での速度 float restrictedSpeed = Mathf.Min(currentSpeed, MaximumSpeed); // 最大速度を制限する。 MovementPerFrame = restrictedSpeed * Vector3.down; // MovementPerFrame を合計するときに秒あたりの移動量に直すので、ここではフレームあたりのでよい。 }