public void Jump()//соленоид вкл { //задаём на 7 позиции биты m[1] = TestPlugin.unsetbit(m[1], 7); m[0] = TestPlugin.unsetbit(m[0], 7); m[1] = TestPlugin.setbit(m[1], 7); m[0] = TestPlugin.setbit(m[0], 7); TestPlugin.SetMessage(m); Debug.Log("Произошла отправка"); }
public void CalcJoystic() //расчёт байтов { yF = Mathf.Abs((int)force.y); //считываем с вертикального джойстика и делаем модуль полученного числа xF = Mathf.Abs((int)force.x); //считываем с горизонтального джойстика и делаем модуль полученного числа if (yF > 0) //если больше нуля, то проводим следующие операции { yF += 31; //прибавляем 31(до минимума чтобы догнать по мощи) yF = Mathf.Clamp(yF, 31, 255); //смотрим, чтобы не вышло за пределы, в противном случае, ставим один из пределов в качестве значения, если меньше 31, то ставим 31, если больше 255, ставим 255 } if (xF > 0) //так же как и сверху, только для горизонта { xF += 31; xF = Mathf.Clamp(xF, 31, 255); } if (force.x > 0 & force.y != 0) //если горизонт больше 0, т.е. вправо, и верткаль не равна нулю, т.е. едем вперёд/назад { r = (int)(xF * 0.5f); //т.к. у нас это поворот, то умножаем на половину, дабы скорость поворота правого движка, была в два раза меньше левого, для поворота. r = (int)(r * 0.25f); //умножаем так же оба движка на 1/4, для того, чтобы вместилось значение в 6 бит(тут правый) yF = (int)(yF * 0.25f); //левый for (int i = 0; i < 6; i++) //в цикле проходимся по битам из переменных выше и заносим их в массив байтов (мощность движков) { if (TestPlugin.checkbit((byte)r, i) == 1) { m[0] = TestPlugin.setbit(m[0], i); } else { m[0] = TestPlugin.unsetbit(m[0], i); } if (TestPlugin.checkbit((byte)(yF), i) == 1) { m[1] = TestPlugin.setbit(m[1], i); } else { m[1] = TestPlugin.unsetbit(m[1], i); } } if (force.y > 0)//направление, если вперёд, то устанавливаем биты, иначе снимаем { m[0] = TestPlugin.setbit(m[0], 6); m[1] = TestPlugin.setbit(m[1], 6); } else { m[0] = TestPlugin.unsetbit(m[0], 6); m[1] = TestPlugin.unsetbit(m[1], 6); } } else if (force.x < 0 & force.y != 0)//аналогично вышестоящему коду, только наоборот { l = (int)(xF * 0.5f); l = (int)(l * 0.25f); yF = (int)(yF * 0.25f); for (int i = 0; i < 6; i++) { if (TestPlugin.checkbit((byte)yF, i) == 1) { m[0] = TestPlugin.setbit(m[0], i); } else { m[0] = TestPlugin.unsetbit(m[0], i); } if (TestPlugin.checkbit((byte)(l), i) == 1) { m[1] = TestPlugin.setbit(m[1], i); } else { m[1] = TestPlugin.unsetbit(m[1], i); } } if (force.y > 0) { m[0] = TestPlugin.setbit(m[0], 6); m[1] = TestPlugin.setbit(m[1], 6); } else { m[0] = TestPlugin.unsetbit(m[0], 6); m[1] = TestPlugin.unsetbit(m[1], 6); } } else if (force.x > 0 & force.y == 0) //если только горизонт, вправо { r = xF; //присваиваем горизонт переменной r = (int)(r * 0.25f); //делим на 4 for (int i = 0; i < 6; i++) //так же мощность движкам задаём { if (TestPlugin.checkbit((byte)r, i) == 1) { m[0] = TestPlugin.setbit(m[0], i); m[1] = TestPlugin.setbit(m[1], i); } else { m[0] = TestPlugin.unsetbit(m[0], i); m[1] = TestPlugin.unsetbit(m[1], i); } } m[0] = TestPlugin.unsetbit(m[0], 6); //на всякий очищаем биты, и ставим на левый, направление назад m[1] = TestPlugin.unsetbit(m[1], 6); m[1] = TestPlugin.setbit(m[1], 6); //устанавливаем, на правый мотор направление вперёд } else if (force.x < 0 & force.y == 0) //аналогично тому, что выше, только наоборот { l = xF; l = (int)(l * 0.25f); for (int i = 0; i < 6; i++) { if (TestPlugin.checkbit((byte)l, i) == 1) { m[0] = TestPlugin.setbit(m[0], i); m[1] = TestPlugin.setbit(m[1], i); } else { m[0] = TestPlugin.unsetbit(m[0], i); m[1] = TestPlugin.unsetbit(m[1], i); } } m[0] = TestPlugin.unsetbit(m[0], 6); m[1] = TestPlugin.unsetbit(m[1], 6); m[0] = TestPlugin.setbit(m[0], 6); } else//если только вертикаль { yF = (int)(yF * 0.25f);//вертикаль присваиваем переменной for (int i = 0; i < 6; i++)//задаём мощь движкам { if (TestPlugin.checkbit((byte)yF, i) == 1) { m[0] = TestPlugin.setbit(m[0], i); m[1] = TestPlugin.setbit(m[1], i); } else { m[0] = TestPlugin.unsetbit(m[0], i); m[1] = TestPlugin.unsetbit(m[1], i); } } //задаём ориентацию движкам if (force.y > 0) { m[0] = TestPlugin.setbit(m[0], 6); m[1] = TestPlugin.setbit(m[1], 6); } else { m[0] = TestPlugin.unsetbit(m[0], 6); m[1] = TestPlugin.unsetbit(m[1], 6); } } TestPlugin.SetMessage(m);//отправка Debug.Log("Произошла отправка"); }
public void VerticalJoyStic() { yF = Mathf.Abs((int)force.y); //считываем с вертикального джойстика и делаем модуль полученного числа xF = Mathf.Abs((int)force.x); //считываем с горизонтального джойстика и делаем модуль полученного числа if (force.x > 0 & force.y != 0) //если горизонт больше 0, т.е. вправо, и верткаль не равна нулю, т.е. едем вперёд/назад { xF = (int)convert(xF, 0, 255, yF, 0); xF = (int)(xF * 0.25f); yF = (int)(yF * 0.25f); //вертикаль присваиваем переменной for (int i = 0; i < 6; i++) //задаём мощь движкам { if (TestPlugin.checkbit((byte)xF, i) == 1) { m[0] = TestPlugin.setbit(m[0], i); } else { m[0] = TestPlugin.unsetbit(m[0], i); } if (TestPlugin.checkbit((byte)yF, i) == 1) { m[1] = TestPlugin.setbit(m[1], i); } else { m[1] = TestPlugin.unsetbit(m[1], i); } } //задаём ориентацию движкам if (force.y > 0) { m[0] = TestPlugin.setbit(m[0], 6); m[1] = TestPlugin.setbit(m[1], 6); } else { m[0] = TestPlugin.unsetbit(m[0], 6); m[1] = TestPlugin.unsetbit(m[1], 6); } } else if (force.x < 0 & force.y != 0)//аналогично вышестоящему коду, только наоборот { xF = (int)convert(xF, 0, 255, yF, 0); xF = (int)(xF * 0.25f); yF = (int)(yF * 0.25f); //вертикаль присваиваем переменной for (int i = 0; i < 6; i++) //задаём мощь движкам { if (TestPlugin.checkbit((byte)yF, i) == 1) { m[0] = TestPlugin.setbit(m[0], i); } else { m[0] = TestPlugin.unsetbit(m[0], i); } if (TestPlugin.checkbit((byte)xF, i) == 1) { m[1] = TestPlugin.setbit(m[1], i); } else { m[1] = TestPlugin.unsetbit(m[1], i); } } //задаём ориентацию движкам if (force.y > 0) { m[0] = TestPlugin.setbit(m[0], 6); m[1] = TestPlugin.setbit(m[1], 6); } else { m[0] = TestPlugin.unsetbit(m[0], 6); m[1] = TestPlugin.unsetbit(m[1], 6); } } else if (force.x > 0 & force.y == 0) //если только горизонт, вправо { r = xF; //присваиваем горизонт переменной r = (int)(r * 0.25f); //делим на 4 for (int i = 0; i < 6; i++) //так же мощность движкам задаём { if (TestPlugin.checkbit((byte)r, i) == 1) { m[0] = TestPlugin.setbit(m[0], i); m[1] = TestPlugin.setbit(m[1], i); } else { m[0] = TestPlugin.unsetbit(m[0], i); m[1] = TestPlugin.unsetbit(m[1], i); } } m[0] = TestPlugin.unsetbit(m[0], 6); //на всякий очищаем биты, и ставим на левый, направление назад m[1] = TestPlugin.unsetbit(m[1], 6); m[1] = TestPlugin.setbit(m[1], 6); //устанавливаем, на правый мотор направление вперёд } else if (force.x < 0 & force.y == 0) //аналогично тому, что выше, только наоборот { l = xF; l = (int)(l * 0.25f); for (int i = 0; i < 6; i++) { if (TestPlugin.checkbit((byte)l, i) == 1) { m[0] = TestPlugin.setbit(m[0], i); m[1] = TestPlugin.setbit(m[1], i); } else { m[0] = TestPlugin.unsetbit(m[0], i); m[1] = TestPlugin.unsetbit(m[1], i); } } m[0] = TestPlugin.unsetbit(m[0], 6); m[1] = TestPlugin.unsetbit(m[1], 6); m[0] = TestPlugin.setbit(m[0], 6); } else//если только вертикаль { yF = (int)(yF * 0.25f);//вертикаль присваиваем переменной for (int i = 0; i < 6; i++)//задаём мощь движкам { if (TestPlugin.checkbit((byte)yF, i) == 1) { m[0] = TestPlugin.setbit(m[0], i); m[1] = TestPlugin.setbit(m[1], i); } else { m[0] = TestPlugin.unsetbit(m[0], i); m[1] = TestPlugin.unsetbit(m[1], i); } } //задаём ориентацию движкам if (force.y > 0) { m[0] = TestPlugin.setbit(m[0], 6); m[1] = TestPlugin.setbit(m[1], 6); } else { m[0] = TestPlugin.unsetbit(m[0], 6); m[1] = TestPlugin.unsetbit(m[1], 6); } } TestPlugin.SetMessage(m); }