[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 2chのread.cgiへ]
Update time : 02/01 04:25 / Filesize : 167 KB / Number-of Response : 840
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

【Xbox 360】 XNA Game Studio その10 【C#】



1 名前:名前は開発中のものです。 [2009/10/01(木) 09:14:47 ID:pBZjJHux]
XNA Creators Club Online (日本語)
creators.xna.com/ja-JP

XNA デベロッパー センター (日本語 - 「XNA Japan Team Blog」、「ひにけに XNA」ブログもこちら)
msdn.microsoft.com/ja-jp/xna/default.aspx

XNA Team Blog (英語)
blogs.msdn.com/xna/default.aspx

790 名前:名前は開発中のものです。 mailto:sage [2010/07/26(月) 12:47:19 ID:D0ityX+N]
回答ありがとうございます。
>>787
出力ウィンドウ見たら、文字が表示されていました!
こちらへの出力だったんですね。
>>788
てっきり画面のほうに出るのかと思っていました。

これで承継やメソッドが機能しているか確かめるのにつかえます。
>それどこで覚えてきたの?
「ゲーム作りで学ぶVisualC#」「独習C#」という本です。
変数・式・配列・承継・オーバーロードなどなど理解できたかなと
感じてXNAのほうに入ったところです。

791 名前:名前は開発中のものです。 mailto:sage [2010/07/26(月) 12:52:39 ID:4eYzDjpe]
XNAはC#が使えるだけで、作法はゲーム製作のそれに通じるものが多いので
言語解説本は捨てるべし

792 名前:名前は開発中のものです。 mailto:sage [2010/07/26(月) 13:02:30 ID:jQ9XJeQI]
言語理解してないとサンプル読めないでしょ
XNAのサンプルやオープンソースはOOでないと認めないみたいなノリのやつばっか

793 名前:名前は開発中のものです。 mailto:sage [2010/07/26(月) 14:16:26 ID:D0ityX+N]
>>791
C#に関して完全にゼロからなので、そういう本でクラスとかメソッドとか
から覚えないと何もわからないレベルだったので必要でした。

C#から実際のゲーム製作に移るに際して参考になる本などはあるでしょうか?

上で書いた解説書などにもXNAでのゲーム製作の例はあるのですが、一つのクラスに
収まるシンプルゲーム(ブロック崩しなど)で、ステージ構成を持ったゲームや
複数の敵キャラの処理方法などがわかりません。
きっとコンポーネントが実用できればと思うのですが、そういったもののゲームでの
運用を学ぶ良い方法はありますでしょうか。

794 名前:名前は開発中のものです。 mailto:sage [2010/07/26(月) 17:52:39 ID:z3Xa1U1/]
お前には無理。

795 名前:名前は開発中のものです。 mailto:sage [2010/07/26(月) 19:28:29 ID:JdQH6uHW]
>>793
>C#から実際のゲーム製作に移るに際して参考になる本などはあるでしょうか?
>>373

796 名前:名前は開発中のものです。 mailto:sage [2010/07/26(月) 21:43:10 ID:X3Ed1AoL]
がんばれ

797 名前:名前は開発中のものです。 mailto:sage [2010/07/26(月) 22:23:18 ID:z3Xa1U1/]
がんばってたらこんな糞みたいな質問しない。

798 名前:名前は開発中のものです。 mailto:sage [2010/07/27(火) 00:44:32 ID:QZn/fdfk]
>>793
まずネット上からコントローラーで一枚絵を動かすサンプルを見つけて、中身を理解する。
変数、式、配列まで理解しているなら、あとは条件式とループ命令を覚えれば簡単なゲームは作れるから頑張れ。




799 名前:名前は開発中のものです。 mailto:sage [2010/07/27(火) 20:23:02 ID:3wk/T3Q2]
何度も回答(と激励)していただきありがとうございます。
>>795の本ですが、前者は読み終え理解しました。クラスとメソッドの意味から
解説してくれていて、他の初心者本と比べても第一歩に最適でした。

>>798
シンプル(自機を動かして攻撃判定ある弾を撃つ)なゲームを動かせる
ぐらいになりました。ただ、カタチになるゲームにするとなると
Updateメソッドが巨大で雑然としすぎてしまいそうです。

解決のカギはコンポーネントと思うので、コンポーネントを使って
種類の違う敵やステージや弾丸やアイテムを整然と管理できるように
勉強中です。しかし参考書のサンプルは1つのクラス・Updateメソッドで
処理しつくしているものが多いんですね・・・。課題です。
もっと煮詰めて理解をふかめようと思います。

800 名前:名前は開発中のものです。 mailto:sage [2010/07/28(水) 16:17:56 ID:dPdwSEyO]
>>799

お、すげーじゃん。
そこまで行ったんなら、あとはひたすら頑張って書くだけ。
ただし、コードがゴチャゴチャにならないよう努力しよう。

Updateが巨大になりすぎるなら、こんもりとある処理を整理して内容ごとに
いくつかのメソッドに分け、Updateはそれらを呼び出すだけにすれば良いよ。

801 名前:名前は開発中のものです。 mailto:sage [2010/07/28(水) 21:43:02 ID:I8ba/k2g]
まともな話なら公式フォーラムでやったほうが答えてもらえるのに

802 名前:名前は開発中のものです。 mailto:sage [2010/07/28(水) 22:22:58 ID:GFVAsthH]
英語で回答があってもなんだか分からんけどねー

803 名前:名前は開発中のものです。 mailto:sage [2010/07/28(水) 22:39:53 ID:1gCvsPLM]
じゃあ日本語がよめるんじゃねーかよ

804 名前:名前は開発中のものです。 mailto:sage [2010/07/28(水) 22:58:01 ID:eyV9KEFF]
>>800
ありがとうございます。

コンポーネントばかり考えていましたが、おかげで
GameTimeを使っていない命令をメソッドでUpdateメソッドから分ける
ことができました。(基本を忘れていました)

805 名前:名前は開発中のものです。 mailto:sage [2010/07/30(金) 01:19:40 ID:mR8LyZ8J]
ひげねこさん夏休みなのにフォーラムで回答とか仕事しすぎ?
他の社員の方もがんばって下さい

806 名前:名前は開発中のものです。 mailto:sage [2010/07/30(金) 07:28:32 ID:ztJpsLFf]
VS2010への対応はまだですか?

807 名前:名前は開発中のものです。 mailto:sage [2010/07/31(土) 19:21:50 ID:NzSzlOCe]
やっぱりXNAですら初心者には敷居が高いみたいだな。
フォーラムを見てて思った

808 名前:名前は開発中のものです。 mailto:sage [2010/07/31(土) 19:51:30 ID:bQIQPEc7]
公式のフォーラムじゃないところでくだらない質問をバリバリ受け付けるところが無いんだよね



809 名前:名前は開発中のものです。 mailto:sage [2010/07/31(土) 20:15:46 ID:AA/vufAk]
えっ、ここがその受け皿じゃないのか

810 名前:名前は開発中のものです。 mailto:sage [2010/07/31(土) 21:43:25 ID:NzSzlOCe]
ここで質問するとフルボッコにされそうだわw

811 名前:名前は開発中のものです。 mailto:sage [2010/08/01(日) 13:07:34 ID:Mw5+o/TE]
前回、質問に答えていただきありがとうございました。
今あたり判定で行き詰っています。

//ショットの衝突判定
for (int i = 0; i < enemy1s.Count; i++)
{
BoundingBox shotClsn1 = new BoundingBox(
new Vector3(shot1pos[i].X, shot1pos[i].Y, 0),
new Vector3(shot1pos[i].X + 30, shot1pos[i].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));
}

と、このように設定したBoundingBoxですが、for文のブロック外に
BoundingBoxの効力が及びません。
本来なら、上記のようにつけた互いの判定を使って、たとえば
if (shotClsn1.Intersects(enemyClsn1) == true){}
のような条件文で判定を照らし合わせて各種処理をしたいのですが
よい方法はありませんでしょうか?

812 名前:名前は開発中のものです。 mailto:sage [2010/08/01(日) 13:23:38 ID:Lz7ORa8o]
== trueなんて書いちゃうレベルで効率的な方法を探り出したらゲーム完成しないだろうな。
まず泥臭いやり方でもゲームを完成させることに集中した方がいいね。

813 名前:名前は開発中のものです。 mailto:sage [2010/08/01(日) 14:00:47 ID:PhpNw+LL]
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));
  ・
  ・
BoundingBox shotClsn1 = new BoundingBox(new Vector3(shot1pos[enemy1s.Count-1].X, shot1pos[enemy1s.Count-1].Y, 0),
                      new Vector3(shot1pos[enemy1s.Count-1].X + 30, shot1pos[enemy1s.Count-1].Y + 30, 0));


shotClsn1には一番最後のデータしか入ってないとか?
でもshotもenemyも1つずつだったらいけるのだろうか…
BoundingBoxの効力が及ばないという意味を詳しく

814 名前:811 mailto:sage [2010/08/01(日) 14:03:32 ID:53uAWxuq]
>>812コンパイラが最適してくれるからいーんです!!

815 名前:名前は開発中のものです。 mailto:sage [2010/08/01(日) 14:09:54 ID:Xyr32qD3]
コンパイラが万能だと思っていた時期が私にもありました

816 名前:名前は開発中のものです。 mailto:sage [2010/08/01(日) 14:11:42 ID:NqTphvUa]
>>811
ローカル変数は宣言されたブロック内でしか使えないので、この場合はforブロックの外で変数宣言しないといけない。
あとshotClsn1もenemyClsn1も配列やリストにしないといけないんじゃないかな。
今のままじゃBoundingBoxを1つずつしか保存しておけないし・・・

817 名前:名前は開発中のものです。 mailto:sage [2010/08/01(日) 14:21:44 ID:53uAWxuq]
プログラム覚えるなら普通のベーシックが一番だよね
書くところがブロック状に分かれてたり宣言するところとか複雑すぎる

818 名前:名前は開発中のものです。 mailto:sage [2010/08/01(日) 14:24:16 ID:XkPXUg4k]
自分が気持ちよくなりたいがためにアホがバカを甘やかすから
バカがこうして付け上がる。



819 名前:名前は開発中のものです。 mailto:sage [2010/08/01(日) 14:50:24 ID:LmMIA1oP]
バカはバカなりのことしか為し得ないんだから
そんなのほっといて違うとこいけばいいだけのはなし。

820 名前:名前は開発中のものです。 mailto:sage [2010/08/01(日) 15:16:51 ID:nNreTycZ]
2chっていうといちいち無駄に戦闘モードになるヤツいるよな

821 名前:名前は開発中のものです。 mailto:sage [2010/08/01(日) 15:54:40 ID:7OTuBTt2]
>>818
反省しました。ごめんなさい。

822 名前:名前は開発中のものです。 mailto:sage [2010/08/01(日) 16:22:52 ID: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 名前:名前は開発中のものです。 mailto:sage [2010/08/01(日) 16:29:26 ID:PhpNw+LL]
あー、すまん
>>813>>811のfor文だとこんな結果になるっていうのを書いただけなんだ

824 名前:名前は開発中のものです。 mailto:sage [2010/08/01(日) 16:32:42 ID: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 名前:名前は開発中のものです。 mailto:sage [2010/08/01(日) 16:44:12 ID:Mw5+o/TE]
>>823
そういう意味でしたか。たしかにそのように設定しているのと同じですね。
効力が及ばないというのは、>>816の人のとおり、ブロック内でしか
つかえないという意味でいいました。答え忘れていて申し訳ありません。

826 名前:名前は開発中のものです。 mailto:sage [2010/08/01(日) 17:17:26 ID: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 名前:名前は開発中のものです。 mailto:sage [2010/08/01(日) 17:22:18 ID:5h5RdW7Z]
if (shotClsn1.Intersects(enemyClsn1) == true)
じゃ心配だから
if (((shotClsn1.Intersects(enemyClsn1) == true) == true) == true)
くらいやろうぜ


828 名前:名前は開発中のものです。 mailto:sage [2010/08/01(日) 17:24:56 ID:XUWKzdSJ]
>for (int i = 0; i < enemy1s.Count; i++)

>   shotClsn1[i] = new BoundingBox(

>enemyClsn1[i] = new BoundingBox(

なに? この素敵な 変数i w
enemy1s.Countからshot1pos.Countが解るの?
配列初期化時からサイズ指定も無いし



829 名前:名前は開発中のものです。 mailto:sage [2010/08/01(日) 17:49:44 ID:PhpNw+LL]
>>828
間違い指摘してくれるなんてお前優しいのな
配列のサイズ指定してないとか自分自身ドン引きだわw

フォーラムでもこんな風におかしいとこバンバン指摘してくれる奴がいれば使いやすいのに

830 名前:811 mailto:sage [2010/08/01(日) 18:08:01 ID:Mw5+o/TE]
僕が最初の質問のときショットの数は
for (int i = 0; i < 20; i++) にすべきところ間違って
for (int i = 0; i < enemy1s.Count; i++)
としていたのにつられて>>826のかたも書き間違えたかな、と。

831 名前:811 mailto:sage [2010/08/01(日) 19:57:04 ID:XkPXUg4k]
最近、暑いのでオナニーするときにお尻の割れ目や股ぐらに汗をかいて気持ちが悪いのですが
これをXNAで表現したいです。どうしたらよいでしょうか。

832 名前:名前は開発中のものです。 mailto:sage [2010/08/01(日) 21:19:00 ID:bmJvBBFp]
ID:XkPXUg4k キモすぎる

833 名前:811 mailto:sage [2010/08/02(月) 07:17:28 ID:PQY34HQy]
アナルの匂いをXNAで作りたいのですが、どうしたらいいですか?
とくにfor文の使い方が分かりません。

834 名前:名前は開発中のものです。 mailto:sage [2010/08/02(月) 07:36:24 ID:67fbxq+E]
>>824
>この場合はenemyClsn1は配列にはなっていないのですがそれぞれの
>値が保持されているように見えます。
i=1のとき(1ループ目)はenemyClsn1にenemy1s[0]のBoundingBoxが保存されているけど、i=1のとき(2ループ目)はこれは破棄されるよ。
これで問題ないのは同じブロック内でshotClsn1.Intersects(enemyClsn1)を呼び出してるから。

835 名前:811 mailto:sage [2010/08/02(月) 07:58:35 ID:PQY34HQy]
>>834
ありがとうございました。

836 名前:811 mailto:sage [2010/08/04(水) 06:24:11 ID:CKJePkqj]
>>834
回答いただいたのに、お礼遅れました。
なるほど、forループの中で
enemy1s[0](敵位置)とshot1posを比較→enemy1s[0]を破棄→
enemy1s[1](二体目の敵位置)とshot1posを比較→enemy1s[1]を破棄→・・・
とやっていっているということですね。
理解できましたし、言われて見直した事でforループの理解が深まりました。
どうもありがとうございました。

837 名前:811 mailto:sage [2010/08/04(水) 13:02:01 ID:G3jjVyJA]
お礼は次の質問への布石です。
本当は用が済んだ時点で面倒なので御礼なんかしないつもりでした。
でも次の質問ができたのでとりあえず御礼しました。

838 名前:名前は開発中のものです。 mailto:sage [2010/08/04(水) 13:25:37 ID:NnWhPTgG]
クソが!
もう答えねえよ!



839 名前:名前は開発中のものです。 mailto:sage [2010/08/04(水) 14:11:20 ID:/ftZ7ia5]
次の質問を予測するスレになりました






[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<167KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef