void FixedUpdate() { if (!CanMove) { if (GameManager.state == GameManager.StateType.Game) { rb.velocity = Vector2.zero; } else if (GameManager.state == GameManager.StateType.Clear) { anim.SetInteger("State", (int)AnimType.Idle); } return; } if (suiyose.Suck()) { // 吸い寄せられている spRenderer.flipX = Blackhole.instance.transform.position.x < transform.position.x; anim.SetInteger("State", (int)AnimType.Sucked); } else { // 吸い寄せられていない時 if (rb.velocity.y >= 0) { anim.SetInteger("State", (int)AnimType.Idle); } else { anim.SetInteger("State", (int)AnimType.Fall); } } if (Input.GetMouseButton(0)) { AddEnergy(EnergySubBlackhole * Time.fixedDeltaTime); } else { if (OnGroundChecker.Check(capsuleCollider2D)) { AddEnergy(energyRecoveryOnGround * Time.fixedDeltaTime); } else { AddEnergy(energyRecoveryInTheAir * Time.fixedDeltaTime); } } // 無敵処理 mutekiTime -= Time.fixedDeltaTime; anim.SetFloat("MutekiTime", mutekiTime); }
private void FixedUpdate() { if (!CanMove) { rb.velocity = Vector2.zero; return; } bool isSucked = suiyose.Suck(); switch (state) { case StateType.Move: // 縮小チェック EnemyInBlackhole.StateType instate = enemyInBlackhole.FixedUpdateState(); if (instate == EnemyInBlackhole.StateType.In) { anim.SetInteger("State", (int)AnimType.Blackhole); anim.SetFloat("Speed", 1); state = StateType.Blackhole; lastSucked = true; break; } // 吸い寄せされていたら、歩きはキャンセルして、吸い寄せ if (isSucked) { lastSucked = true; anim.SetInteger("State", (int)AnimType.Sucked); break; } if (lastSucked) { // 吸い寄せられていたら、歩き速度未満になるまでは歩きに復帰しない float spd = rb.velocity.magnitude; if (spd >= walkSpeed) { break; } } lastSucked = false; UpdateMove(); break; case StateType.Blackhole: lastSucked = true; // 吸い込まれのチェック EnemyInBlackhole.StateType st = enemyInBlackhole.FixedUpdateState(); if (st == EnemyInBlackhole.StateType.InDone) { // 吸い込まれが完了した ToSweets(); GameParams.AddScore(point); Destroy(gameObject); } else if (st == EnemyInBlackhole.StateType.None) { // 戻った state = StateType.Move; UpdateMove(); } break; } }