ページ 11

矩形の当たり判定

Posted: 2012年8月26日(日) 15:38
by イマダニ
この前ジャンプと走りのアニメーションについて質問した者です。
今回は当たり判定についての二つ質問したいと思います。
まず一つ、当たり判定には矩形や円、三角関数などいろいろな判定方法がありますが、
アクションゲームで使われる当たり判定は矩形でいいのでしょうか?
そして二つ目は、私はブロック崩しを作る際に矩形の当たり判定を用いたのですが、
その時、バーやボールの幅と高さをGetGraphSize関数で取得しました。
ちゃんと跳ね返ったのですが、これでは当たり判定を自在に大きくしたりできないなと思い、
ほかに方法はないかと考えました。
皆さんはどのようにして幅や高さを取得しているのでしょうか?
アクションゲームの作り方がのっている本達で、
それらはDXライブラリではなくDirectXでの開発ですが、RECT構造体というもので測っているのをよく見かけます。
それと同じような感じなのでしょうか?
教えてください。

Re: 矩形の当たり判定

Posted: 2012年8月26日(日) 16:10
by h2so5
イマダニ さんが書きました:この前ジャンプと走りのアニメーションについて質問した者です。
今回は当たり判定についての二つ質問したいと思います。
まず一つ、当たり判定には矩形や円、三角関数などいろいろな判定方法がありますが、
アクションゲームで使われる当たり判定は矩形でいいのでしょうか?
ゲームによります。
キャラクターの形が丸いなら円の方が良い場合もありますし、
形が複雑なら複数の当たり判定の組み合わせも考えられます。
イマダニ さんが書きました: そして二つ目は、私はブロック崩しを作る際に矩形の当たり判定を用いたのですが、
その時、バーやボールの幅と高さをGetGraphSize関数で取得しました。
ちゃんと跳ね返ったのですが、これでは当たり判定を自在に大きくしたりできないなと思い、
ほかに方法はないかと考えました。
皆さんはどのようにして幅や高さを取得しているのでしょうか?
当たり判定を大きくしたいだけなら、
GetGraphSize関数で取得した幅と高さを適当に大きくするだけで可能です。

Re: 矩形の当たり判定

Posted: 2012年8月26日(日) 18:42
by イマダニ
すいません質問の仕方が悪かったです。
大きくするだけならそれでいいんですが、たとえばボールが左端に当たった時とか、右端に当たった時とか
当たり判定を分けるときに”バーのX座標から20のところ”が”左端”って判定している人がいるじゃないですか。
あれってよくわかるなって思うんですよ。どうやって測ってるんですか?

Re: 矩形の当たり判定

Posted: 2012年8月26日(日) 19:15
by h2so5
すみません、よけいに意味が分かりません。
ブロック崩しのバーの左端と右端で当たり判定を分けることがあるのでしょうか?

Re: 矩形の当たり判定

Posted: 2012年8月26日(日) 21:46
by イマダニ

コード:

	if(バーの左端に当たったとき){
			dx = 3;
			dy *= -1;
	}else if(バーの右端に当たったとき){
			dx = -3;
			dy *= -1;
	}else{
			dy *= -1;
	}
}
こういうのです

Re: 矩形の当たり判定

Posted: 2012年8月27日(月) 13:47
by イマダニ
自己解決しました