/// <summary> /// 上下移動 /// </summary> void VerticalMove() { float v = Input.GetAxisRaw("Vertical"); StellaMove.myVelocity.y = v * upDownSpeed; // 登り切ったチェック if (v > 0.5f) { if (!StellaMove.IsIvyUp()) { // 前方に飛び降り StellaMove.myVelocity.x = StellaMove.MiniJumpSpeedMax * StellaMove.forwardVector.x; StellaMove.myVelocity.y = putDownSpeedY; StellaMove.instance.Gravity(); StellaMove.instance.Move(); StellaMove.instance.ChangeAction(StellaMove.ActionType.Air); return; } } // 移動 float lastY = StellaMove.instance.transform.position.y; CollisionFlags flags = StellaMove.ChrController.Move(StellaMove.myVelocity * Time.fixedDeltaTime); if (flags.HasFlag(CollisionFlags.Below) && StellaMove.myVelocity.y < 0f) { // 下にぶつかっていたらツタを離す StellaMove.myVelocity = Vector3.zero; StellaMove.instance.ChangeAction(StellaMove.ActionType.Walk); return; } float vely = (lastY - StellaMove.instance.transform.position.y) / Time.fixedDeltaTime; if (Mathf.Abs(vely) < Mathf.Abs(StellaMove.myVelocity.x)) { vely = StellaMove.myVelocity.x; } StellaMove.SetAnimFloat("VelY", vely); }