Exemplo n.º 1
0
        void UpdateMove()
        {
            if (OnGroundChecker.Check(capCollider))
            {
                // 足場がある時は移動
                anim.SetInteger("State", (int)AnimType.Walk);

                // 足場による反転チェック
                Vector3 offset = footOffset;
                if (spRenderer.flipX)
                {
                    offset.x = -offset.x;
                }
                var footPos  = transform.position + offset;
                var hitCount = Physics2D.RaycastNonAlloc(
                    footPos,
                    Vector2.down,
                    hits,
                    footCheckDistance,
                    LayerMask.GetMask("Map"));
                if (hitCount == 0)
                {
                    spRenderer.flipX = !spRenderer.flipX;
                }

                UpdateVelocity();
            }
            else
            {
                // 足場がない時は、アニメをStandに変更して慣性移動
                anim.SetInteger("State", (int)AnimType.Stand);
            }
        }
Exemplo n.º 2
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);
        }