Esempio n. 1
0
        private void DoMotion(Note note)
        {
            if (note.Between(Note.H0, Note.H18))
            {
                DoHand(note - Note.H0);
            }

            var ik = FindObjectOfType <FretsIK>();
            var n  = (int)note;

            list = new List <Vector2Int>();
            Add(Note.E0, Note.E18);
            Add(Note.A0, Note.A18);
            Add(Note.D0, Note.D18);
            Add(Note.G0, Note.G18);

            foreach (var range in list)
            {
                if (n.Between(range.x, range.y))
                {
                    ik.chord = n / 19;
                    ik.fret  = n - range.x;
                    break;
                }
            }
            // 根据 手的位置和 目标品格 的位置 相隔的品格数
            // 来选择使用哪根手指
            os = ik.fret - ik.hand;
            if (os <= -1)
            {
                ik.finger = 1;
            }
            else if (os <= 0)
            {
                ik.finger = 2;
            }
            else if (os <= 1)
            {
                ik.finger = 3;
            }
            else if (os <= 2)
            {
                ik.finger = 4;
            }
            //ik.finger++;
            //if (ik.finger > 4) ik.finger = 0;
        }