C# (XNA) での当たり判定

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
Bun

C# (XNA) での当たり判定

#1

投稿記事 by Bun » 14年前

xnaでシューティングゲームを作成しているものですが・・・
19章までのC#向けファイルを見つけることまではできたのですが、それ以降で詰まっています。
最低限シューティングゲームを作るためには自機の当たり判定が欲しいのですが(21章)C#での記述法がわかりません。


どなたか、お助けいただけないでしょうか?

xnaは3.1です。

Bun

追伸C# (XNA) での当たり判定

#2

投稿記事 by Bun » 14年前

↑追伸
ソースはここからいただきました。
http://softyasu.net/game/gametop.html

beatle
記事: 1281
登録日時: 14年前
住所: 埼玉
連絡を取る:

Re: C# (XNA) での当たり判定

#3

投稿記事 by beatle » 14年前

Dixqさんの龍神録をC#+XNAに移植したものだと書いてありますから、多分移植だと思います。
ということで、C言語板の龍神録の21章をC#+XNAに移植すれば良いと思います。

移植の仕方が分からないというのであれば、具体的な質問をお願いします。
例えば、C言語での配列はC#でどうやって書けばいいのか、とか。

Bun

Re: C# (XNA) での当たり判定

#4

投稿記事 by Bun » 14年前

ご返事ありがとうございます。
具体的にわからないことは、どこのクラスにどのコードを記述すればいいのか?ということです。

21章でいうstruct.hや、GV.h、load.cpp load、ini.cpp等のC++で記述するべき場所が、C#においてどこに対応しているかが知りたいです。

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 15年前
住所: 東海地方
連絡を取る:

Re: C# (XNA) での当たり判定

#5

投稿記事 by softya(ソフト屋) » 14年前

私の書いたコードですのがすっかり忘れてております。
なので、まずXNA側コードが元の龍神録と19章までの部分でどの様に対応しているかを先に調べられたほうが良いと思います。
そうすれば、かなり理解が進みますので20章以降も難しくなくなるはずです。

まぁ、21章の場合当たり判定と無敵処理なので自弾の当たり判定を敵と自分の当たり判定に応用すれば作れる気がします。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

Bun

C# (XNA) での当たり判定

#6

投稿記事 by Bun » 14年前

当たり判定用のクラスが必要になるでしょうか?
また、必要でないならどのクラスに実装するのがよいのでしょうか?
何度も済みませんが、お願いします<(_ _)>

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 15年前
住所: 東海地方
連絡を取る:

Re: C# (XNA) での当たり判定

#7

投稿記事 by softya(ソフト屋) » 14年前

Bun さんが書きました:当たり判定用のクラスが必要になるでしょうか?
また、必要でないならどのクラスに実装するのがよいのでしょうか?
何度も済みませんが、お願いします<(_ _)>
あった方が良いとは思いますが、まずはShot.csに実装してみたらどうでしょうか?
PlayerShotの当たり判定はPlayerShot.csに実装されていますので参考にして下さい。
なお、当たり判定用のクラスを作るときはShot.csとPlayerShot.csで共通になるように工夫して下さい。。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

Bun

Re: C# (XNA) での当たり判定

#8

投稿記事 by Bun » 14年前

コード:

public void Collision(Enemy[] enemys,Shot enemyShot,Effect effect)
		{
			//	最大ショット数分
			for( int sn=0 ; sn<plShot.Length ; sn++ ) {
				//	有効なら
				if( plShot[sn].bflag ) {
					//	全部の敵と当たり判定
					for( int en=0 ; en<enemys.Length ; en++ ) {
						//	敵が有効?
						if( enemys[en].IsLive() ) {
							//	自機ショットと敵が当たっていれば
							if( hit_judge(ref plShot[sn],enemys[en]) ) {
								//	当たった弾は消える。
								plShot[sn].bflag = false;
								//	ダメージを与えて敵が死亡したら
								if( enemys[en].HitDamage(plShot[sn].power) ) {
									//	弾幕を中断
									enemyShot.ShotCancel( enemys[en] );
									//	消滅のエフェクト
									effect.EnterDelEffect( enemys[en] );
								}
							}
						}
					}
				}
			}
		}

このようなコードの

コード:

public void Collision(Enemy[] enemys,Shot enemyShot,Effect effect)
には何を書けばいいのでしょうか?

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 15年前
住所: 東海地方
連絡を取る:

Re: C# (XNA) での当たり判定

#9

投稿記事 by softya(ソフト屋) » 14年前

逆に質問してしまいますが、敵の弾と自機の当たり判定で必要な引数って何でしょうか?
[補足]XNA版の19章のコードをちゃんと理解していれば分かるはずです。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

Bun

Re: C# (XNA) での当たり判定

#10

投稿記事 by Bun » 14年前

自機の位置、敵の弾座標、あたり範囲などでしょうか。。
いまいち自機の座標をどこから持ってくればいいのかわからないので、簡単なあたり判定も実装できない状況です。

勉強不足ですみません。

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 15年前
住所: 東海地方
連絡を取る:

Re: C# (XNA) での当たり判定

#11

投稿記事 by softya(ソフト屋) » 14年前

自機の座標変数はどのクラスのなんという名前の変数でしょうか?
あとShot.csは敵弾のクラスですので敵弾の情報は保持しているはずですよね。探してみてください。
当たり範囲は本家龍神録と比べてみてください。忘れてしまっています。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

Bun

Re: C# (XNA) での当たり判定

#12

投稿記事 by Bun » 14年前

Player.csのdrawPosのようです。
敵の弾情報は、弾幕によって判定する変数などは変えるのでしょうか・・・

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 15年前
住所: 東海地方
連絡を取る:

Re: C# (XNA) での当たり判定

#13

投稿記事 by softya(ソフト屋) » 14年前

Bun さんが書きました:敵の弾情報は、弾幕によって判定する変数などは変えるのでしょうか・・・
そこら辺は本家と同じですよ。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

Bun

Re: C# (XNA) での当たり判定

#14

投稿記事 by Bun » 14年前

ありがとうございます。
Player.csのdrawPosを指定するためには、どのように描くのでしょうか?

コード:

Shot enemyShot
のように

コード:

PLayer drawPos
でいいのでしょうか。

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 15年前
住所: 東海地方
連絡を取る:

Re: C# (XNA) での当たり判定

#15

投稿記事 by softya(ソフト屋) » 14年前

Bun さんが書きました:ありがとうございます。
Player.csのdrawPosを指定するためには、どのように描くのでしょうか?

コード:

Shot enemyShot
のように

コード:

PLayer drawPos
でいいのでしょうか。
その質問はかなりC#の基礎文法の知識の問題ですが、C#の入門書などは勉強されたのでしょうか?
Playerクラスのオブジェクトは何処にあって、drawPosがどういう定義なのか理解されていますか?
[補足]クラスのカプセル化が行われているので単純には取り出せませんし取り出しても行けません。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

Bun

C# (XNA) での当たり判定

#16

投稿記事 by Bun » 14年前

一応勉強はしたのですが、カプセル化などはなかなか理解できませんでした。
ということは新しく変数を作るというのも一つの手としていいということでしょうか。

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 15年前
住所: 東海地方
連絡を取る:

Re: C# (XNA) での当たり判定

#17

投稿記事 by softya(ソフト屋) » 14年前

Bun さんが書きました:一応勉強はしたのですが、カプセル化などはなかなか理解できませんでした。
ということは新しく変数を作るというのも一つの手としていいということでしょうか。
drawPosを取り出す為のメソッド関数を追加して下さい。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

Bun

Re: C# (XNA) での当たり判定

#18

投稿記事 by Bun » 14年前

[quote="softya(ソフト屋drawPosを取り出す為のメソッド関数を追加して下さい。[/quote]

わかりました。

何とかなりそうになってきました。
いろいろ教えてくださりありがとうございました。

閉鎖

“C言語何でも質問掲示板” へ戻る