// Start is called before the first frame update void Start() { DontDestroyOnLoad(this); controls = new ControlsPacket(0, new Vector2(), new Vector2(), 0f, 0f); prevControls = controls; bufferedControls = 0; }
private void DoControls() { Controls controlsRaw = 0; Vector2 lstick; Vector2 rstick; float l2; float r2; foreach (Controls control in System.Enum.GetValues(typeof(Controls))) { controlsRaw |= Input.GetKey(controlMap[control.ToString()]) ? control : 0; } if (controlMap.OnKeyboard) { float lsh = 0; if ((controlsRaw & Controls.Right) == Controls.Right) { lsh++; } if ((controlsRaw & Controls.Left) == Controls.Left) { lsh--; } float lsv = 0; if ((controlsRaw & Controls.Up) == Controls.Up) { lsv++; } if ((controlsRaw & Controls.Down) == Controls.Down) { lsv--; } lstick = new Vector2(lsh, lsv); float rsh = 0; if ((controlsRaw & Controls.CRight) == Controls.CRight) { rsh++; } if ((controlsRaw & Controls.CLeft) == Controls.CLeft) { rsh--; } float rsv = 0; if ((controlsRaw & Controls.CUp) == Controls.CUp) { rsv++; } if ((controlsRaw & Controls.CDown) == Controls.CDown) { rsv--; } rstick = new Vector2(rsh, rsv); l2 = (controlsRaw & Controls.Shield) == Controls.Shield ? 1f : 0f; r2 = (controlsRaw & Controls.Shield) == Controls.Shield ? 1f : 0f; } else { lstick = new Vector2(Input.GetAxis("P" + playerID + " LSH"), Input.GetAxis("P" + playerID + " LSV")); rstick = new Vector2(Input.GetAxis("P" + playerID + " RSH"), Input.GetAxis("P" + playerID + " RSV")); l2 = Input.GetAxis("P" + playerID + " L2"); r2 = Input.GetAxis("P" + playerID + " R2"); double langle = Utils.Force360(Utils.ToDeg(Utils.VectorAngle(lstick))); if (langle <= controlMap.BaseHorizontalAngle || langle >= 360d - controlMap.BaseHorizontalAngle) { controlsRaw |= Controls.Right; } else if (langle >= 180d - controlMap.BaseHorizontalAngle && langle <= 180d + controlMap.BaseHorizontalAngle) { controlsRaw |= Controls.Left; } else if (langle < 180d) { controlsRaw |= Controls.Up; } else if (langle > 180d) { controlsRaw |= Controls.Down; } double rangle = Utils.Force360(Utils.ToDeg(Utils.VectorAngle(rstick))); if (rangle <= controlMap.BaseHorizontalAngleC || rangle >= 360d - controlMap.BaseHorizontalAngleC) { controlsRaw |= Controls.CRight; } else if (rangle >= 180d - controlMap.BaseHorizontalAngleC && rangle <= 180d + controlMap.BaseHorizontalAngleC) { controlsRaw |= Controls.CLeft; } else if (rangle < 180d) { controlsRaw |= Controls.CUp; } else if (rangle > 180d) { controlsRaw |= Controls.CDown; } if (l2 > 0 || r2 > 0) { controlsRaw |= Controls.Shield; } } controls = new ControlsPacket(controlsRaw, lstick, rstick, l2, r2); }
// Update is called once per frame void Update() { prevControls = controls; DoControls(); }