예제 #1
0
        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;
        }
예제 #2
0
        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 を合計するときに秒あたりの移動量に直すので、ここではフレームあたりのでよい。
        }