10/08/01 14:50:24 LmMIA1oP
バカはバカなりのことしか為し得ないんだから
そんなのほっといて違うとこいけばいいだけのはなし。
820:名前は開発中のものです。
10/08/01 15:16:51 nNreTycZ
2chっていうといちいち無駄に戦闘モードになるヤツいるよな
821:名前は開発中のものです。
10/08/01 15:54:40 7OTuBTt2
>>818
反省しました。ごめんなさい。
822:名前は開発中のものです。
10/08/01 16:22:52 Mw5+o/TE
回答ありがとうございました。
>>812
効率を目指しているわけではないのですが、他が思いつきませんでした。
泥臭いやり方とは敵ごとにBoundingBoxなしで接近を条件に処理するような
方法でしょうか。
>>813
BoundingBox shotClsn1 = new BoundingBox(
new Vector3(shot1pos[0].X, shot1pos[0].Y, 0),
new Vector3(shot1pos[0].X + 30, shot1pos[0].Y + 30, 0));
BoundingBox shotClsn1 = new BoundingBox(
new Vector3(shot1pos[1].X, shot1pos[1].Y, 0),
new Vector3(shot1pos[1].X + 30, shot1pos[1].Y + 30, 0));
と、過去このようにもやってみたのですが
「shotClsn1はスコープで宣言されています」というように警告が出てしまいました。
>>816の方のおっしゃるように1つしか保存できないという事かもしれません。
(つづく)
823:名前は開発中のものです。
10/08/01 16:29:26 PhpNw+LL
あー、すまん
>>813は>>811のfor文だとこんな結果になるっていうのを書いただけなんだ
824:名前は開発中のものです。
10/08/01 16:32:42 Mw5+o/TE
(続き)
ただ、上で書いたように敵の配列にBoundingBoxを設定したのについて
きちんと働いているようです。
BoundingBox shotClsn1 = new BoundingBox(
new Vector3(shot1pos[0].X, shot1pos[0].Y, 0),
new Vector3(shot1pos[0].X + 30, shot1pos[0].Y + 30, 0));
for (int i = 0; i < enemy1s.Count; i++)
{
BoundingBox enemyClsn1 = new BoundingBox(
new Vector3(enemy1s[i].X, enemy1s[i].Y, 0),
new Vector3(enemy1s[i].X + 30, enemy1s[i].Y + 30, 0));
if (shotClsn1.Intersects(enemyClsn1) == true)
{
enemy1s.Remove(enemy1s[i]);
}
}
とやった場合、ショット[0]があたった敵から消えてくれます。
この場合はenemyClsn1は配列にはなっていないのですがそれぞれの
値が保持されているように見えます。
このenemyClsn1もまた、ひとつひとつ設定しようとすると
「既にスコープで宣言されています」とエラーがでてしまうのですが・・・
まだ理解しきれていないので中途半端な返事になってしまい申し訳ありません。
825:名前は開発中のものです。
10/08/01 16:44:12 Mw5+o/TE
>>823
そういう意味でしたか。たしかにそのように設定しているのと同じですね。
効力が及ばないというのは、>>816の人のとおり、ブロック内でしか
つかえないという意味でいいました。答え忘れていて申し訳ありません。
826:名前は開発中のものです。
10/08/01 17:17:26 PhpNw+LL
BoundingBox[] shotClsn1;
BoundingBox[] enemyClsn1;
for (int i = 0; i < enemy1s.Count; i++)
{
shotClsn1[i] = new BoundingBox(
new Vector3(shot1pos[i].X, shot1pos[i].Y, 0),
new Vector3(shot1pos[i].X + 30, shot1pos[i].Y + 30, 0));
enemyClsn1[i] = new BoundingBox(
new Vector3(enemy1s[i].X, enemy1s[i].Y, 0),
new Vector3(enemy1s[i].X + 30, enemy1s[i].Y + 30, 0));
}
for (int i = 0; i < enemy1s.Count; i++)
{
for(int j = 0; j < enemy1s.Count; j++)
{
if (shotClsn1[j].Intersects(enemyClsn1[i]))
{
enemy1s.Remove(enemy1s[i]);
}
}
}
こんな感じだろうか
2Dの当たり判定にBoundingBox使った事ないから間違ってるかもしれない
827:名前は開発中のものです。
10/08/01 17:22:18 5h5RdW7Z
if (shotClsn1.Intersects(enemyClsn1) == true)
じゃ心配だから
if (((shotClsn1.Intersects(enemyClsn1) == true) == true) == true)
くらいやろうぜ
828:名前は開発中のものです。
10/08/01 17:24:56 XUWKzdSJ
>for (int i = 0; i < enemy1s.Count; i++)
> shotClsn1[i] = new BoundingBox(
>enemyClsn1[i] = new BoundingBox(
なに? この素敵な 変数i w
enemy1s.Countからshot1pos.Countが解るの?
配列初期化時からサイズ指定も無いし
829:名前は開発中のものです。
10/08/01 17:49:44 PhpNw+LL
>>828
間違い指摘してくれるなんてお前優しいのな
配列のサイズ指定してないとか自分自身ドン引きだわw
フォーラムでもこんな風におかしいとこバンバン指摘してくれる奴がいれば使いやすいのに
830:811
10/08/01 18:08:01 Mw5+o/TE
僕が最初の質問のときショットの数は
for (int i = 0; i < 20; i++) にすべきところ間違って
for (int i = 0; i < enemy1s.Count; i++)
としていたのにつられて>>826のかたも書き間違えたかな、と。
831:811
10/08/01 19:57:04 XkPXUg4k
最近、暑いのでオナニーするときにお尻の割れ目や股ぐらに汗をかいて気持ちが悪いのですが
これをXNAで表現したいです。どうしたらよいでしょうか。
832:名前は開発中のものです。
10/08/01 21:19:00 bmJvBBFp
ID:XkPXUg4k キモすぎる
833:811
10/08/02 07:17:28 PQY34HQy
アナルの匂いをXNAで作りたいのですが、どうしたらいいですか?
とくにfor文の使い方が分かりません。
834:名前は開発中のものです。
10/08/02 07:36:24 67fbxq+E
>>824
>この場合はenemyClsn1は配列にはなっていないのですがそれぞれの
>値が保持されているように見えます。
i=1のとき(1ループ目)はenemyClsn1にenemy1s[0]のBoundingBoxが保存されているけど、i=1のとき(2ループ目)はこれは破棄されるよ。
これで問題ないのは同じブロック内でshotClsn1.Intersects(enemyClsn1)を呼び出してるから。
835:811
10/08/02 07:58:35 PQY34HQy
>>834
ありがとうございました。
836:811
10/08/04 06:24:11 CKJePkqj
>>834
回答いただいたのに、お礼遅れました。
なるほど、forループの中で
enemy1s[0](敵位置)とshot1posを比較→enemy1s[0]を破棄→
enemy1s[1](二体目の敵位置)とshot1posを比較→enemy1s[1]を破棄→・・・
とやっていっているということですね。
理解できましたし、言われて見直した事でforループの理解が深まりました。
どうもありがとうございました。
837:811
10/08/04 13:02:01 G3jjVyJA
お礼は次の質問への布石です。
本当は用が済んだ時点で面倒なので御礼なんかしないつもりでした。
でも次の質問ができたのでとりあえず御礼しました。
838:名前は開発中のものです。
10/08/04 13:25:37 NnWhPTgG
クソが!
もう答えねえよ!
839:名前は開発中のものです。
10/08/04 14:11:20 /ftZ7ia5
次の質問を予測するスレになりました