質問: C# にて、画像を回転 <基礎>と「C# のフォーム上にて、キーイベントでキャラクター画像を移動」の比較サンプルNo.2を組み合わせて 移動したところで回転みたいなことはできますか?
回答: 条件違いで、似たサンプルが複数あるので、どのサンプルなのかわかりません。 しかし、基本的に、可能です。 順番に説明します。 [イベントと動きの関係] ところで、回転でも、直進でも、イベントの切っ掛けで(イベントでの指示で)行なわれています。 回転のサンプルは、ボタンを押した時のイベントで、少しずつ回転させました。 直進のサンプルは、キーを押したイベントで、少しずつ直進移動させました。 例えば、このイベントと動作の関係を入れ替えることも可能です。 すなわち、キーを押した時のイベントで、少しずつ回転させるようにさせることも可能です。 ボタンを押した時のイベントで、少しずつ直進移動させることも可能です。 [動きの合成] 動きの合成も可能です。 すなわち、本件で言えば、回転と直進の合成をすることも可能です。 つまり、回転させながら、左右、又は上下の移動と言う動作です。 回転のサンプルにおける中心位置の座標を、直進のサンプルの方法で移動させれば良いです。 回転の中心位置が直進移動するので、回転しながら縦横移動と言う動作になります。 [動きの切り替え] 上記までの説明の通り、イベントを替えてみたり、動きを替えることが可能です。 これを、あるタイミングで、自由自在に切り替えると言うことも可能です。 例えば、キーを押した回数を数えるカウンターを設けるとします。 そのようなカウンターを設けたら、以下のような動作が可能です。 まず最初は直進移動で、10回キーを押すと、次は回転移動に切り替わる。 次に、さらにまた10回キーを押すと、今度は、回転から直進移動に戻る。 と言うよに、動きの種類を交互に切り替えられます。 上記は、一例に過ぎないです。 何が言いたいのかと言いますと、条件によって、動きを切り替えることは、可能であると言うことです。 なお、動きの種類に、停止を加えても良いです。 例えば、まず最初は直進移動で、10回キーを押すと、次は停止に切り替わる。 次に、さらにまた10回キーを押すと、今度は、停止から直進移動に戻る。 停止のコードは、座標位置の移動の処理をさせないだけなので、簡単です。 [本題の件] イベントを発生させるものは、ボタンとキーボードだけではないです。 本件のようなゲーム的なものでは、マウスやタイマーも、イベントの発信源として、よく使われています。 本題の件は、タイマーも活用すると良いと思います。 タイマーのイベントは、一定時間の間隔で、定期的にイベントが発生すると言うものです。 例えば、通常は、キー指示による直進移動にしておきます。 そして、キャラクターがステージの端にぶつかった時に、回転に切り替えます。 回転に切り替わった後に、タイマーイベントが10回発生したら、直進移動に戻します。 [まとめ] 要するに、イベントの切り替えや、動きの種類の切り替えを行なえば、質問の類の動作は行なえます。 [補足の件] 「最後の描画の部分の組み合わせ」とは、「背景画像の上に、キャラクター画像を組み合わせるコードの部分」と言う意味でしょうか。 なお、コード記述の件は、土台のコード(質問で言われているサンプル)が既にあるので、コードを書く手間は、それ程負担ではないです。 つきましては、明日の朝で良いのでしたら、知恵ノートの方で、コードを記述します。