public override void UpdateAction() { // つた掴みチェック if (StellaMove.CheckIvyHold()) { return; } // 行動ボタンチェック。着地時は何もしない if (Input.GetButton("Action") && !isLanding) { Actable act = StellaMove.ActionBoxInstance.GetActableInstance(); if (act != null) { if (act.Action()) { return; } } } StellaMove.instance.Gravity(); StellaMove.instance.Move(); if (!isLanding && StellaMove.chrController.isGrounded && StellaMove.myVelocity.y < 0f) { SoundController.Play(SoundController.SeType.Landing); StellaMove.myVelocity.x = 0; StellaMove.RegisterAnimEvent(Grounded); isLanding = true; StellaMove.CheckStepOn(); } }
public override void UpdateAction() { // つた掴みチェック if (StellaMove.CheckIvyHold()) { return; } // 行動ボタンチェック。着地時は何もしない if (Input.GetButton("Action") && !isLanding) { Actable act = StellaMove.ActionBoxInstance.GetActableInstance(); if (act != null) { if (act.Action()) { return; } } } StellaMove.instance.Gravity(); StellaMove.instance.Move(); // 着地チェック bool isGrounded = StellaMove.ChrController.isGrounded; if (!isGrounded && (StellaMove.myVelocity.y < 0)) { int hitCount = PhysicsCaster.CharacterControllerCast( StellaMove.ChrController, Vector3.down, StellaMove.CollisionMargin, PhysicsCaster.MapCollisionPlayerOnlyLayer); for (int i = 0; i < hitCount; i++) { if (!PhysicsCaster.hits[i].collider.isTrigger) { isGrounded = true; } } } // 着地チェック if (!isLanding && isGrounded && StellaMove.myVelocity.y < 0f) { SoundController.Play(SoundController.SeType.Landing); StellaMove.myVelocity.x = 0; StellaMove.RegisterAnimEvent(Grounded); isLanding = true; StellaMove.CheckStepOn(); StageManager.SetFollowCameraTarget(StellaMove.instance.transform); } // 頭ぶつけチェック else if ((StellaMove.myVelocity.y > 0f) && StellaMove.IsHitHead) { SoundController.Play(SoundController.SeType.HitHead); StellaMove.myVelocity.y = 0f; } }
public override void UpdateAction() { // ターン中処理 if (state == StateType.Turn) { if (StellaMove.instance.Turn()) { state = StateType.Walk; } return; } // 置く候補の地面の座標 Vector3 naepos = GetPutPosition(StellaMove.instance.transform.position); bool canPut = CheckPut(naepos); if (canPut) { // 置けるならボタンによって苗を置く if (Input.GetButton("Water") || Input.GetButton("Action")) { StellaMove.naePutPosition = naepos; StellaMove.instance.ChangeAction(StellaMove.ActionType.PutDown); return; } // 今置いたらここという場所に苗マーカーを表示 NaeActable.MarkerObject.SetActive(true); naepos.y += StellaMove.naeActable.HeightFromGround; NaeActable.MarkerObject.transform.position = naepos; } else { // 置けない時はマーカーを非表示 NaeActable.MarkerObject.SetActive(false); } // 行動 if (!Walk()) { // ターン時はこれ以降の処理不要 return; } bool isBack = PushCheck(); StellaMove.instance.Gravity(); // 移動先の候補を調べる Vector3 nextNaePos = GetPutPosition(StellaMove.instance.transform.position + StellaMove.myVelocity * Time.fixedDeltaTime); if (!Mathf.Approximately(Vector3.Distance(naepos, nextNaePos), 0f)) { // 苗の候補場所が変わるので、移動キャンセル調査 // 苗の高さは、地面より1マス分上を確認 nextNaePos.y = StellaMove.chrController.bounds.min.y + naeWalkCollideHeight + StellaMove.naeActable.HeightFromGround; int hitCount = StellaMove.naeActable.FetchOverlapObjects(nextNaePos, hits, groundLayer); for (int i = 0; i < hitCount; i++) { if (hits[i].collider.CompareTag(GroundTag)) { // ぶつかるので移動をキャンセル StellaMove.myVelocity.x = 0f; break; } } } StellaMove.instance.Move(); if (!StellaMove.chrController.isGrounded) { StellaMove.instance.ChangeAction(StellaMove.ActionType.Air); FallNextBlock(); } else { // 乗っかりチェック StellaMove.CheckStepOn(); // 戻しじゃなく移動しているなら、ジャンプチェック if (!isBack && !Mathf.Approximately(StellaMove.myVelocity.x, 0)) { StellaMove.instance.CheckMiniJump(); } } }
public override void UpdateAction() { // ターン中処理 if (state == StateType.Turn) { if (StellaMove.instance.Turn()) { state = StateType.Walk; } return; } // 水まきチェック if (Input.GetButton("Water")) { StellaMove.instance.ChangeAction(StellaMove.ActionType.Water); return; } else if (StellaMove.CheckIvyHold()) { return; } else { // 行動ボタンチェック if (Input.GetButton("Action")) { Actable act = StellaMove.ActionBoxInstance.GetActableInstance(); if (act != null) { if (act.Action()) { return; } } } Walk(); } bool isBack = PushCheck(); StellaMove.instance.Gravity(); StellaMove.instance.Move(); StellaMove.ChrController.stepOffset = StellaMove.DefaultStepOffset; if (!StellaMove.ChrController.isGrounded) { StellaMove.instance.ChangeAction(StellaMove.ActionType.Air); FallNextBlock(); } else { // 乗っかりチェック StellaMove.CheckStepOn(); // 移動しているなら、ジャンプチェック if (!isBack && !Mathf.Approximately(StellaMove.myVelocity.x, 0)) { StellaMove.instance.CheckMiniJump(); } } }