// Update is called once per frame void FixedUpdate() { //移動量が大きすぎる場合は、ワープ扱いをして落下距離をリセット if ((mBeforePosition - transform.position).magnitude >= 2.0f) { mHighestPosition = transform.position; mBeforePosition = transform.position; } float lFallDistance = Mathf.Abs(mHighestPosition.y - transform.position.y); //接地し始めた瞬間で if (mLanding.noticeLandEffect == true) { mLanding.noticeLandEffect = false; //falseにしておく //一定距離以上落ちていたら if (lFallDistance >= GetImpactDistance()) { //水中なら if (IsInWater()) { OnLand(mWeightManager.WeightLv, CEnviroment.cWater, lFallDistance); //水中に落下 } else { OnLand(mWeightManager.WeightLv, CEnviroment.cGround, lFallDistance); //地上に落下 } mHighestPosition = transform.position; //最高地点を更新 } } //着水判定 // bool lInWater = IsInWater(); //水の中に入った瞬間で //if (mBeforeInWater == false && lInWater == true) { //水の中に入った瞬間、または出た瞬間で if (mBeforeInWater != lInWater) { //一定距離以上落ちていたら if (lFallDistance >= GetImpactDistance()) { OnLand(mWeightManager.WeightLv, CEnviroment.cWaterSurface, lFallDistance); //インパクトのイベントを呼び出す mHighestPosition = transform.position; //最高地点を更新 } } mBeforeInWater = lInWater; //最高地点の更新 // //下向きに落ちるなら if (mMoveManager.GetFallVec() < 0.0f) { //上向きに進んでいたら if (transform.position.y >= mBeforePosition.y) { mHighestPosition = transform.position; //最高地点を更新 } } //上向きに落ちるなら else { //下向きに進んでいたら if (transform.position.y <= mBeforePosition.y) { mHighestPosition = transform.position; //最高地点を更新 } } //前回位置を更新 mBeforePosition = transform.position; }