public void Update(){ KeyCode[] keyCodes = (KeyCode[]) Enum.GetValues(typeof(KeyCode)); foreach(KeyCode keyCode in keyCodes) { if(Input.GetKey(keyCode)){ if(PressedKeyCodes.ContainsKey(keyCode)){ OnKeyPressedEventData e = PressedKeyCodes[keyCode]; e.duration += Time.deltaTime; OnKeyPressed.Invoke(e); } else { OnKeyDown.Invoke(new OnKeyDownEventData(keyCode)); PressedKeyCodes.Add(keyCode, new OnKeyPressedEventData(keyCode)); } } else { if(PressedKeyCodes.ContainsKey(keyCode)){ PressedKeyCodes.Remove(keyCode); OnKeyUp.Invoke(new OnKeyUpEventData(keyCode)); } } } }
public void MoveByKeyEvent(OnKeyPressedEventData e) { switch (e.Key) { case KeyCode.W: ForceByKeyPress.z += 1; break; case KeyCode.S: ForceByKeyPress.z -= 1; break; case KeyCode.A: ForceByKeyPress.x -= 1; break; case KeyCode.D: ForceByKeyPress.x += 1; break; } }