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;
        }
    }