/// <summary> /// 更新高度 /// </summary> void UpdateHeight() { if (!mIsHover) { if (mYSpeed < gravity) { //加速下落的实现a*2,normal*1 if (mFallDown == eFallDown.normal) { mYSpeed += gravity * Time.deltaTime; } else if (mFallDown == eFallDown.doubleGravity) { mYSpeed += gravity * Time.deltaTime * 5f; } //mYSpeed+=gravity*Time.deltaTime*2f; if (mYSpeed < 0f) { isCanLand = false; } else { isCanLand = true; } } else if (mYSpeed > gravity) { mYSpeed = gravity; } if (mCC) { localYOffset = -mYSpeed * Time.deltaTime; if (mJumpState == eJumpState.FirstJump || mJumpState == eJumpState.DoubleJump) { if (mCC.isGrounded && isCanLand) { mA.SetBool("land", true); mJumpState = eJumpState.NoneJump; } } if (mFallDown == eFallDown.doubleGravity) //落地后清除加速下降状态 { if (mCC.isGrounded) { mFallDown = eFallDown.normal; mJumpState = eJumpState.NoneJump; mA.SetBool("land", true); } } } } else //滞留空中 { localYOffset = 0f; } }
/// <summary> /// 下降 /// </summary> void FallDown() { if (mA) { if (mA.GetBool("land") == false) { mFallDown = eFallDown.doubleGravity; } else { mA.CrossFade("fall", 0.2f); StartCoroutine(mCCFallDown()); } } }