物理をプレイヤー入力に直接接続しないことをお勧めします。これはあまり拡張可能なアーキテクチャではありません。
キャラクター オブジェクトによって実装される速度などの物理プロパティを定義するインターフェイスを用意します。プレイヤーがアップキーを押したとき、プレイヤーが地面にいるかどうか、そして上に移動するように加速度が設定されているかどうかを確認する必要があります。次に、エンティティを移動する前に、重力やその他の力を適用する物理インターフェイスを実装するすべてのオブジェクトのリストを物理システムに繰り返し処理させます。このようにして、ゲーム内のすべてのエンティティに同じ物理コードを使用できます。
また、キーボード入力をプレーヤーの動きに直接接続しないことをお勧めします。ジャンプや移動など、キャラクターが実行できるさまざまなアクションを定義する「CharacterInstructions」を返す「nextInstruction」メソッドを定義する「ICharacterController」というインターフェイスを使用できます。これは、入力クラスによって実装できます。次に、キャラクター クラスは CharacterController への参照を保持するため、nextInstruction を呼び出すだけです。このようにして、プレイヤー入力、AI、またはネットワーク通信を介してキャラクターを制御できますが、プレイヤーと同じ動作を共有できます。
Game Coding Completeは、ゲーム プログラミングに真剣に取り組んでいる場合に読むべきすばらしい本です。
Game Engine Architectureもお勧めできます
XNA を使用しているため、ゲーム コンポーネントの使用を検討する必要があります。