Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
        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;
            }
        }