using System; using System.Collections.Generic; using System.Linq; using System.Text; using UnityEngine; namespace Assets.JoyStick { class HandleHoystick : MonoBehaviour { public RotationControl bot; public Walk walk; public void Update() { float a2 = Remap(Input.GetAxis("1"), 1, -127, -1, 127); float a1 = Remap(Input.GetAxis("2"), 1, -127, -1, 127); float a3 = Remap(Input.GetAxis("3"), -1, -127, 1, 127); float b2 = Remap(Input.GetAxis("4"), -1, -127, 1, 127); float b3 = Remap(Input.GetAxis("5"), -1, -127, 1, 127); float b1 = Remap(Input.GetAxis("6"), -1, -127, 1, 127); //Debug.Log(Input.GetAxis("4")); //Debug.Log(Remap(Input.GetAxis("4"), -1, -127, 1, 127)); bot.rotation = new Quaternion(limit(a2, -20, 20), -1 * limit(a3, -20, 20), -1 * limit(a1, -20, 20), 1); float speed = (float)(Math.Sqrt(b1 * b1 + b2 * b2) / 127) * 3; walk.walkspeed = speed < 0.5f ? 0 : speed; float rotation = -1 * limit(b3 / 4, -5, 5); walk.centerRotation = rotation < 0.5f && rotation > -0.5f ? 0 : rotation; walk.walkDirection = (-1 * ConvertRadiansToDegrees((float)Math.Atan2(b2, b1))); float rotationabs = Math.Abs(walk.centerRotation); float speed2 = ((6 / 3) * walk.walkspeed) + ((6 / 5) * rotationabs); speed2 = speed2 < 6 ? speed2 : 6; walk.speed2 = (int)(10 - speed2); } public float limit(float input, float min, float max) { input = input / 6; return (input < max & input > min) ? input : input < min ? min : max; } public float ConvertRadiansToDegrees(float radians) { float degrees = (float)((180 / Math.PI) * radians); return (degrees); } public float Remap(float from, float fromMin, float toMin, float fromMax, float toMax) { var fromAbs = from - fromMin; var fromMaxAbs = fromMax - fromMin; var normal = fromAbs / fromMaxAbs; var toMaxAbs = toMax - toMin; var toAbs = toMaxAbs * normal; var to = toAbs + toMin; return to; } } }