public void Update()
        {
            var rigidbody = GetComponent <Rigidbody2D>();
            var velocity  = new Vector2(rigidbody.velocity.x, -fallSpeed);
            var torque    = 0.0f;

            var horizontal = Input.GetAxis(@"Horizontal");

            if (prevHorizontal <= 0 && horizontal > 0 || prevHorizontal >= 0 && horizontal < 0)
            {
                sfxManager.Play(IngameSfxType.MinoMove);
            }
            if (horizontal < 0)
            {
                velocity.x -= 0.122f;
            }
            if (horizontal > 0)
            {
                velocity.x += 0.122f;
            }
            velocity.x     = Mathf.Clamp(velocity.x, -LimitHorizontalVelocity, LimitHorizontalVelocity);
            prevHorizontal = horizontal;

            var vertical = Input.GetAxis(@"Vertical");

            if (vertical < 0)
            {
                SoftdropFrames++;
                var frames = Mathf.Clamp(SoftdropFrames, 0, SoftdropPeekFrame);
                fallAccelaration = SoftdropPeekAccelaration * SoftdropAccelarationCurve.Evaluate((float)frames / SoftdropPeekFrame);
            }
            else
            {
                SoftdropFrames    = 0;
                fallAccelaration *= 0.86f;
            }

            if (Input.GetButtonDown(@"Rotate Left") || Input.GetButtonDown(@"Rotate Right"))
            {
                sfxManager.Play(IngameSfxType.MinoTurn);
            }
            if (Input.GetButton(@"Rotate Left"))
            {
                torque += 2.08f;
            }
            if (Input.GetButton(@"Rotate Right"))
            {
                torque -= 2.08f;
            }

            velocity.y -= fallAccelaration;

            rigidbody.AddTorque(torque);
            rigidbody.velocity        = velocity;
            rigidbody.angularVelocity = Mathf.Clamp(rigidbody.angularVelocity, -LimitAngularVelocity, LimitAngularVelocity);

            dropEffect.transform.rotation = Quaternion.identity;
        }
Beispiel #2
0
        public bool Push(int index)
        {
            // ロックされていたら何もしない
            if (Locked)
            {
                return(false);
            }

            // 今のホールドミノを削除
            Clear();

            // 生成
            mino = instantiator.Instantiate(resolver.Get(index), frame.position, Quaternion.identity);
            // エフェクトの削除?
            instantiator.Destroy(mino.transform.GetChild(0).gameObject);
            Value = index;

            // ホールドをロック
            Lock();

            // アニメーション
            animator.Play(@"HoldAnimation", 0, 0.0f);
            // SE
            sfxManager.Play(IngameSfxType.MinoHold);

            return(true);
        }
        public void Hold(int index)
        {
            Clear();

            mino = instantiator.Instantiate(resolver.Get(index), frame.position, Quaternion.identity);
            instantiator.Destroy(mino.transform.GetChild(0).gameObject);
//            obj.transform.parent = transform;

            Value = index;

            animator.Play(@"HoldAnimation", 0, 0.0f);
            sfxManager.Play(IngameSfxType.MinoHold);
        }