C#を習い始めて1か月のものです
某突破ゲーム作成サイトで記載されているプログラムで、PictureBoxではなくBitMapで処理を行いDrawImage同士の当たり判定を行いたいのですがうまく当たり判定が行えないのですが
public partial class Form1 : Form
{
static Bitmap cavas = new Bitmap(563, 411);
Graphics gg = Graphics.FromImage(cavas);
Random rand = new Random();
int PH, PW; //自機のサイズ
int pxp; //自機の座標
Point Cpos; //カーソル座標
int[] kabeX = new int[2]; //壁の座標
int[] kabeY = new int[2];
int kabeW, kabeH; //壁のサイズ
Boolean Hitflg; //当たり判定
Boolean Shotflg; //射出判定
---------中略---------
private void pBase_MouseDown(object sender, MouseEventArgs e)
{
Shotflg = true;
}
//プレイヤの描画
gg.DrawImage(pPlayer.Image, new Rectangle(Cpos.X, pxp, PW, PH));
//壁の描画
gg.DrawImage(pKabe.Image, new Rectangle(kabeX[0], kabeY[0], kabeW, kabeH));
private void HitCheck()
{
for (int i = 0; i < 2; i++)
{
if ((Math.Abs(Cpos.X - kabeX[i]) < (PW + kabeW) / 2)
&& (Math.Abs(pxp - kabeY[i]) < (PH + kabeH) / 2))
{
Hitflg = true;
}
}
}
上記のプログラムで当たり判定を行っているのですが隙間が空いているところでも当たり判定が出てしまうのですがどこかおかしいでしょうか?
ちなみにMouseDownイベントでgg.DrawImage(pPlayer.Image, new Rectangle(Cpos.X, pxp, PW, PH))が飛ぶようなプログラムを組んであります
A 回答 (1件)
- 最新から表示
- 回答順に表示
No.1
- 回答日時:
それぞれの矩形の中心の座標で判定しないといけないと思いますが、
左上の座標で判定していませんか?
>int PH, PW; //自機のサイズ
>int[] kabeX = new int[2]; //壁の座標
>int[] kabeY = new int[2];
>int kabeW, kabeH; //壁のサイズ
座標はPointで、サイズはSizeで…とした方が別々の変数にするより良いかと思われます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Java javaでのプログラム(配列)について質問です. 2 2022/10/14 22:27
- Java java 入力 3 4 3 出力 ABC DEFG HIJ このようなプログラムの書き方を教えてくだ 2 2022/07/15 14:18
- Java java 引数 戻り値のあるメソッド 3 2023/02/12 06:23
- Ruby 【JAVA】数字をひし形に出力するプログラムについて 2 2022/07/11 23:32
- C言語・C++・C# 大量のデータを読み込んで表示する速度を改善したい 8 2023/05/07 13:29
- Java Java 配列<選挙> 4 2023/07/31 15:07
- C言語・C++・C# C#テキストボックスの文字を配列にいれてその後表示する 4 2022/07/17 04:47
- C言語・C++・C# C# DatagridviewにExcelシートを反映するとエラーが出る 2 2023/05/06 17:12
- C言語・C++・C# C 言語の Gauss Jordan 法について 2 2022/12/28 11:16
- C言語・C++・C# カードシャッフルのブログラムを使ってc言語でブラックジャックをしたい 2 2022/04/12 15:13
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
グラフの交点の求め方(Excel)
-
エクセルである点からの距離で...
-
エクセルで回転する座標の出し方
-
マインクラフト(pc版)で座標...
-
Excel VBA で自在に図形を変化...
-
始点、終点の二つの座標と半径...
-
y=x^2の座標をプロットするプロ...
-
visualbasic でform上に正三角...
-
円弧の描画について
-
シーケンサー(PLC?)で制...
-
球面状に円を描くプログラム
-
多角形の内部かどうか判定する方法
-
ダイアログ内コントロールの位...
-
DirectXを使ってテクスチャ(画...
-
PPTのVBA スライド右下端の座...
-
VBで、開いているExcelシートの...
-
任意軸回転を、XYZ軸回転の...
-
以下のプログラムは重心を求め...
-
空間上の二点を結ぶ直線上に任...
-
3次元空間上の2つの座標から...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
グラフの交点の求め方(Excel)
-
マインクラフト(pc版)で座標...
-
エクセルで回転する座標の出し方
-
エクセルである点からの距離で...
-
3次元空間上の2つの座標から...
-
閉図形の座標の配列が右回りか...
-
ダイアログ内コントロールの位...
-
始点、終点の二つの座標と半径...
-
座標を持った平面範囲に座標を...
-
空間上の二点を結ぶ直線上に任...
-
エクセルシート上のマウスポイ...
-
多角形の内部かどうか判定する方法
-
ワード上Shapeの位置情報を統一...
-
Excel VBA で自在に図形を変化...
-
OpenCvSharp4による画像判定解...
-
C言語 配列で座標
-
シーケンサー(PLC?)で制...
-
以下のプログラムは重心を求め...
-
交差する2線分の交点座標の求め方
-
VB6のPrinter.ScaleWidth に対...
おすすめ情報