private void StoreHoldTime(InputsDataPerFrame data) { for (int i = 0; i != System.Enum.GetValues(typeof(InputKeyType)).Length; ++i) { if (KeysHoldFrames[i] < 0) { KeysHoldFrames[i] = 0; } if (data.KeysState[i * 3 + 2] && KeysHoldFrames[i] != VirtualInputManager.MAX_HOLD_FRAME) { ++KeysHoldFrames[i]; } else if (data.KeysState[i * 3 + 1]) { KeysHoldFrames[i] *= -1; //Debug.Log ("release frame: " + -KeysHoldFrames[i]); } } if (data.InputVector.magnitude > 0.01f) { if (KeysHoldFrames[5] != VirtualInputManager.MAX_HOLD_FRAME) { ++KeysHoldFrames[5]; } } else { KeysHoldFrames[5] = 0; } }
public void LoadInput(InputsDataPerFrame data) { curIndex = (curIndex + 1) % INPUT_BUFFER_SIZE; inputBuffer[curIndex].InputVector = data.InputVector; inputBuffer[curIndex].KeysState = (bool[])data.KeysState.Clone(); StoreHoldTime(data); //Debug.Log (inputBuffer[curIndex + 1].ToString()); //Debug.Log (inputBuffer[curIndex + 1].KeysState[1]); }
private void InitInputDataPool() { for (int i = 0; i != INPUT_BUFFER_SIZE; ++i) { inputBuffer[i] = new InputsDataPerFrame(); //inputBuffer[i].InputVector = new Vector2(); //inputBuffer[i].KeysState = new bool[12]; } for (int i = 0; i != System.Enum.GetValues(typeof(InputKeyType)).Length + 1; ++i) { KeysHoldFrames[i] = 0; } }
void Update() { inputDataTop = VirtualInputManager.Instance.GetTopInput(); keysHoldFrames = VirtualInputManager.Instance.GetKeysHoldFrames(); if (player != null) { //Debug.Log(inputDataTop.InputVector); player.inputVector = inputDataTop.InputVector; player.inputKeyStates = inputDataTop.KeysState; if (VirtualInputManager.Instance.CheckCommandInput()) { if (VirtualInputManager.Instance.CheckInputInBuffer(InputKeyStateType.KEY_MELEE_ATTACK_DOWN)) { player.CommandAttack = true; } if (VirtualInputManager.Instance.CheckInputInBuffer(InputKeyStateType.KEY_EXECUTE_ATTACK_DOWN)) { player.CommandExecute = true; } if (VirtualInputManager.Instance.CheckInputInBuffer(InputKeyStateType.KEY_DODGE_DOWN)) { player.CommandDodge = true; } if (VirtualInputManager.Instance.CheckInputInBuffer(InputKeyStateType.KEY_GUARD_DOWN)) { player.CommandGuard = true; } } if (!VirtualInputManager.Instance.CheckInputInBuffer(InputKeyStateType.KEY_MELEE_ATTACK_DOWN)) { player.CommandAttack = false; } if (!VirtualInputManager.Instance.CheckInputInBuffer(InputKeyStateType.KEY_EXECUTE_ATTACK_DOWN)) { player.CommandExecute = false; } if (!VirtualInputManager.Instance.CheckInputInBuffer(InputKeyStateType.KEY_DODGE_DOWN)) { player.CommandDodge = false; } if (!VirtualInputManager.Instance.CheckInputInBuffer(InputKeyStateType.KEY_GUARD_DOWN)) { player.CommandGuard = false; } if (inputDataTop.KeysState[(int)InputKeyStateType.KEY_CHARGE]) { player.CommandCharge = true; } else { player.CommandCharge = false; } //if (inputDataTop.KeysState[(int) InputKeyStateType.KEY_GUARD]) /* * if (inputDataTop.KeysState[(int) InputKeyStateType.KEY_GUARD_DOWN]) * player.CommandGuard = true; * else * player.CommandGuard = false; */ if (inputDataTop.KeysState[(int)InputKeyStateType.KEY_GUARD]) { player.CommandGuardHoldOn = true; } else { player.CommandGuardHoldOn = false; } /* * if (player.DodgeTrigger) { * VirtualInputManager.Instance.ClearAllInputsInBuffer (); * } * if (player.AttackTrigger) { * VirtualInputManager.Instance.ClearAllInputsInBuffer (); * } * if (player.ExecuteTrigger) { * VirtualInputManager.Instance.ClearAllInputsInBuffer (); * } */ player.CommandAttackHoldFrame = keysHoldFrames[0]; player.CommandExecuteHoldFrame = keysHoldFrames[1]; player.CommandDodgeHoldFrame = keysHoldFrames[2]; player.InputAxisHoldFrame = keysHoldFrames[5]; // for test if (Input.GetKeyDown(KeyCode.B)) { if (player.Animator.GetFloat(TransitionParameter.SpeedMultiplier.ToString()) == 1.0f) { player.Animator.SetFloat(TransitionParameter.SpeedMultiplier.ToString(), 0.1f); } else { player.Animator.SetFloat(TransitionParameter.SpeedMultiplier.ToString(), 1f); } } // for test if (Input.GetKeyDown(KeyCode.Y)) { if (!player.Animator.GetBool("IsRunning")) { player.Animator.SetBool("IsRunning", true); player.CharacterData.IsRunning = true; } else { player.Animator.SetBool("IsRunning", false); player.CharacterData.IsRunning = false; } } // for test /* * if (Input.GetKeyDown (KeyCode.P)) { * Dictionary<string, int> dicts = new Dictionary<string, int> (); * dicts.Add ("Swordman", 1); * //dicts.Add ("Gunman", 2); * SpawnEnemyGroup (dicts); * } */ // for test if (Input.GetKeyDown(KeyCode.T)) { CinemachineStateDrivenCamera camera = GameObject.FindObjectOfType(typeof(CinemachineStateDrivenCamera)) as CinemachineStateDrivenCamera; Animator anim = camera.m_AnimatedTarget; CinemachineCameraOffset offset = camera.gameObject.GetComponent <CinemachineCameraOffset> (); float Offset = anim.GetFloat("ExtraOffset"); offset.m_Offset.y += Offset; offset.m_Offset.z += -Offset; } // for test if (Input.GetKeyDown(KeyCode.N)) { if (player.CharacterData.Energy > 1.0f) { player.TakeEnergy(1.0f, null); } } if (Input.GetKeyDown(KeyCode.M)) { player.CharacterData.GetEnergy(4.0f); } /* * Vector3 forward = gameObject.transform.forward; * forward.y = 0f; * float angle = (Quaternion.LookRotation (forward, Vector3.up)).eulerAngles.y * Mathf.Deg2Rad; * //Debug.Log(forward.ToString() + " " + Mathf.Cos(angle).ToString() + " " + Mathf.Sin(angle).ToString()); * float blendTreeInputX = player.inputVector.x * Mathf.Cos (angle) - player.inputVector.y * Mathf.Sin (angle); * float blendTreeInputY = player.inputVector.x * Mathf.Sin (angle) + player.inputVector.y * Mathf.Cos (angle); * player.Animator.SetFloat ("InputX", blendTreeInputX); * player.Animator.SetFloat ("InputY", blendTreeInputY); * * if (Input.GetKeyDown (KeyCode.F)) { * player.Animator.SetBool ("Fire", true); * } else { * player.Animator.SetBool ("Fire", false); * } */ } if (menu != null) { menu.inputVector = inputDataTop.InputVector; menu.inputKeyStates = inputDataTop.KeysState; } }
public override void Init() { inputs = new InputsDataPerFrame(); }