前提・実現したいこと
【環境】
Microsoft Visual Studio
Windows フォームアプリケーション(.NET Framework) C#
プログラミングの学校の卒業制作で野球盤のようなゲームを作っています。
バットの画像をできるだけ滑らかに回転させることでスイングの表現をしたいです。
(対応するボタンを押す → スイングフラグが立つ → バットが回る を実現したい)
発生している問題・エラーメッセージ
根本的にどういった方向性でコードを組めば良いのか解決の糸口すら掴めません。
軽くネットで調べてみてもUnityやXAMARIN向けの講座ばかりで、
いまいち参考にできるかの判断がつきません。
ネットで検索してRotateFlipTypeというコードを見つけたので使ってみようかと思いましたが、
組み方が悪いのか90度単位で向きが変わるだけでアニメーションになりません。
エラーメッセージ
該当のソースコード
C#
1private void Form1_KeyDown(object sender, KeyEventArgs e) 2 { 3 if(e.KeyData == Keys.Space) 4 { 5 batSwingFlg = 1; 6 timer4.Start(); //バットのタイマーON 7 } 8 } 9private void timer4_Tick(object sender, EventArgs e) 10 { 11 //バットのアニメーションタイマー 12 if(batSwingFlg == 1) 13 { 14 //batはPictureBoxにつけた名前 15 bat.Image.RotateFlip(RotateFlipType.Rotate90FlipNone); 16 bat.Refresh(); 17 //↑これだと滑らかな動きにならない 18 } 19 }
試したこと
上にもあるRotate関連のコードをいくつか試してみました。
また、DrawImageとInvalidate();を使った再描画方法を試そうとしましたが
細かい組み方が違っているのかうまく再描画されずただ画像がそこに居座っているだけでした。
補足情報(FW/ツールのバージョンなど)
あくまでC#とWindowsフォームアプリケーションを使って作成するという条件の課題なので
直接UnityやXamarin、WPFを使うことはできません(これらと互換性のあるコードの流用は可)
また、可能であればで良いので
回転するオブジェクトに当たり判定を追従させる方法も教えていただけると助かります。
(固定されたオブジェクトへの判定の付け方は理解しています)
厄介な縛りかもしれませんがよろしくお願いします。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/10/23 00:20