1read 100read
2011年12月2期プログラム55: XNA 質問・相談スレッド 2 (787)
TOP カテ一覧 スレ一覧 2ch元 削除依頼 ▼
・ 次のスレ
56: 構造化ウェブプログラミング言語Dart2 (549)
57: 【GPGPU】くだすれCUDAスレ part5【NVIDIA】 (251)
60: [Tips]Borland C++Builder ちょいテク No.01 (415)
61: プログラム板自治スレッド その3 (507)
XNA 質問・相談スレッド 2
- 1 :10/10/05 〜 最終レス :11/12/23
- ■前スレ
http://hibari.2ch.net/test/read.cgi/tech/1190558621/
■公式
http://www.microsoft.com/japan/xna/
http://xna-studio.jp/
http://blogs.msdn.com/xnajapan/
■関連スレ
【Xbox 360】 XNA Game Studio その10 【C#】
http://hibari.2ch.net/test/read.cgi/gamedev/1254356087/
C#, C♯, C#相談室 Part62
http://hibari.2ch.net/test/read.cgi/tech/1284775031/
ここは技術的な質問スレです。XNAプログラミングに関係のない話はご遠慮ください。
- 2 :
- >>1乙
- 3 :
- 敵弾で苦労してるという話見ると
多彩な弾幕だしてくるCAVEとか、やっぱすごいんだなと思う
- 4 :
- 敵の弾幕とかじゃなくて女の絵のをうつとポヨンポヨン揺れてエロい声だす
ようなシューティングを作ってほしい。
ぎゃる☆がんも絶対買うよ。
敵なんて体当たりだけでいい。同時に1種類の敵しかでないで撃破されたら
元の位置にもどして再登場とかやれば配列なんか覚えなくても作れるよ。
だから初心者は上記のようなシューティングからはじめるといい。
- 5 :
- >1
新スレ乙
- 6 :
- 剣を振った攻撃を一度だけあてるにはどうすればいいでしょうか?
剣を振ってるモーション中にBoundingBoxが重なったらライフを減らすようにしてますが
重なってる間減り続けてしまいます。
- 7 :
- 今回のヒットで既に減らしたよん、という事を覚えておけばいい
- 8 :
- >>6
ヒットする条件にbool型の変数を用意して
ヒットしたらfalseに切り替えるといいかも。
- 9 :
- >6
一体に付き一発ずつ当てたい場合なら
敵のダメージ側に無敵時間を設けるか
どの攻撃にヒットしたっていうのを敵キャラに残しといて、前回と同じ攻撃はスルーするように。ダメージモーションが終わったらリセット。
一番最初に当てたキャラのみに当てたい場合なら
ヒットした後にプレイヤー側で攻撃終了フラグを立てる。次の攻撃やったり攻撃終了したりしたらフラグリセット。
- 10 :
- FPSを作りたいんですが、カメラ制御で苦戦してます。
参考になるサイトや本はないでしょうか?
http://creators.xna.com/ja-jp/sample/chasecamera
今はこのサンプルソースと睨めっこしている最中ですが
まさか自動追尾カメラがこんなに複雑なコードで制御されてたとは・・・・・・
世の中の3Dゲームが全て神ゲーに見えて怖いです・・・・・・
- 11 :
- XNAでは通常日本語フォントの文字列を表示できないとありますが、
欧文フォントだと簡単に表示できるのでしょうか?
- 12 :
- さすがに文字の表示くらいググればいくらでも出てくるだろ…
- 13 :
- >>10
具体的にわからない部分があるのでなく全体的に理解が難しいならば
参考書を読破するのがいいんじゃない、かなぁ。
- 14 :
- 「ゲーム作りで学ぶ」のドライビングゲームの項で
日本語も表示してるっぽいよ???
- 15 :
- FPSなら単純にカメラ移動させれば良いんじゃないの
- 16 :
- 2Dゲームで拡縮を実装したいのですが、良い方法がみつからず行き詰っています。
例えば、ドラキュラHDの拡縮や、デススマ2やエスプガルーダ2にある
画面サイズアジャストのように、画面にカメラをよせたり離したり
するような処理は可能でしょうか。
- 17 :
- 最近見た気がするけどSpriteBatch.Beginの引数に変換行列を渡す
- 18 :
- >>17
ありがとうございます。
検索してみたところ、実装したい処理をしているサイトをみつけました。
ただ、具体的にどのような記述をするものなのかがわかりません。
3D知識もからみそうなので1からチェックしたいと思うのですが
参考にできる本やサイトなどありますでしょうか。
あと、この処理が可能とわかっただけでも安心できましたので感謝いたします。
- 19 :
- >>18
http://msdn.microsoft.com/ja-jp/library/bb194912%28XNAGameStudio.31%29.aspx
XNA使うには行列とベクトルの基礎知識が必要。わからないなら高校数学やりなおし。
その上で「アフィン変換」でググる。
- 20 :
- >>19
これまで既存知識でやりくりしていたので、かなり大変そうです。
回転についてだけどそれを理解しないとはじまらない・・・
とにかく調べながら頑張ります。ありがとうございました。
- 21 :
- こういうやりとり見ると3Dに入るととたんにレベルが別次元にとぶのを感じるわ
- 22 :
- >>21
別に2次元でも4次元でも行列を使ったアフィン変換の記述は出来るぞ
- 23 :
- 結局、最終的には数学が絡むのよね・・・・・・
- 24 :
- 2Dだけど、ポジションと、アニメと変数とあたり判定だけで
一応ゲーム作れてしまっているからなー。
- 25 :
- そもそも行列とは? なんて、哲学的な知識はいらない。
結果だけしっていて、それが使えれば問題。
たとえば回転行列がなぜああいう形式なのか、知らなくても問題はない。
どう使えばどんな結果が得られるのか、それが必要。
というか、それができないヤツはプログラミングなんて_
- 26 :
- またオマエか
- 27 :
- つか線形代数ぐらい大学の教養でやるだろ
- 28 :
- 3Dプログラミングなんて、高校数学で十分だし
- 29 :
- 計算が難しいんじゃなくてどうやって書くのかの書式がわからないだけなんだと思う
入門サイト系のサンプルって2Dのが多くてそれの改変からはじめる初心者が多いからね
- 30 :
- そういうスタイルで勉強するにはXNAは複雑すぎるとおもう
あまりにもおまじないが多くなりすぎる
- 31 :
- >>30
それこそ逆だろ。
なにをしたいかにもよるが、延々デバイスの初期化で行き詰まったりするよりは、
サンプルを改変しながら、その改変での動作変更を見て勉強する方が早いと漏れは思う。
サンプル眺めてると、だんだん全体像が頭に入ってくるし。
ただ、デバイスの初期化とか、根本的な部分を学ぶにはXNAは不適当。
隠蔽されちゃって見えんからな。
- 32 :
- >>30
勉強が目的なんじゃなくて、XNAで(もしくはXBOXの)作りたいゲームを作ることが
目的という人が多いだろうからなぁ、ことXNAに関しては。
そういう方向から入った人は、書式を知ってからその意味を理解するパターンも多い。
ていうか、現に参考書はそういう方法論とってるのが多いし。
- 33 :
- 個人的に受験で例えるなら
「C+やC#の理解から深める=基本書の読破」
「サンプル見ての勉強=過去問を沢山」
前者は確実に地力はつくが無駄知識もあり効率が悪い。
後者は目的達成の近道だが応用はきかず学んだ部分以外は零からの学習が要る。
新規の質問者は前者が多いけど回答者は後者の方法論で学んできた人が多くて
前者できた人間には遠い道に見える回答が多い、みたいな。
本当に2Dか3Dかの差なのかな??
- 34 :
- C+ ? はおいておいて、普通に経験の問題です。
自分でもかけないのに、他人のコード読めるはずもなく。
- 35 :
- >>34
おまえは英語読めるか? 書けなくても読める漢字もたくさんあるだろ?
人間の頭はそういうふうにできてる。
初心者に完動品プログラムはかけないかもしれないが、動くプログラムのソースを読むことはできる。
関数名とか、基本が英語だからなんとなく機能を類推できるものも多い。
分からなければリファレンスの出番(英単語を調べたことぐらいあるだろ?)。
文法は参考書で覚える方がいいと思うが、APIはソースから入ってもいいと思う。
- 36 :
- ソースを読めるレベルに達しているのかのか、というつもりで書いた。
確かに言い方が極端すぎた。
- 37 :
- プログラムの勉強の仕方までなんて相談には載れないからどっかいけよ
- 38 :
- 最低限、C#の経験なくてもソース見たら何書いてるかだいたい解る人向けだな
プログラミング初めての人にはお勧めできない
遊びながら覚えるにしてもWinFormsから入ったほうがいい
- 39 :
- XNA でもまだなんか DirectX 的なレイヤーの臭い残ってるしね。
今まで DirectX 触ったことがあるとか言う人だったら、かなり簡単って思えるんだろうけども。
- 40 :
- >>34
でも、サンプルコード+コードの説明
という形式が初心者向け教本や入門用サイトのおきまりだし
理解は早そうとも思う。
forループで配列に代入とか、自分で思いつくより、みせられて
ああ、こういう考え方をするのか、と理解するのがイイんじゃないかなと。
- 41 :
- ゲーム作りで学ぶC#の、多次元配列の項目ですが175ページで
int[] array = new int[3,3];
となっていますが
int[,] array = new int[3,3];
の間違いかな。エラーがでるので左に「,」を入れたらうまくいきました。
- 42 :
- 誤植じゃないの?
出版社のサポートページとかに誤植情報載ってると思うから見ておいた方が良いかもね
- 43 :
- リファレンスで文法ぐらい調べろよ。
学習センスゼロだな。
- 44 :
- どうしてそんなに怒ってるんだ?
- 45 :
- 言語仕様のリファレンスなんか初心者が読めるわけないだろ
- 46 :
- XNAは初心者用ではありません
- 47 :
- >>43
自己解決した上に入門書のミスの告知をしたんだから褒めたまえよ
- 48 :
- オレもそう思う
- 49 :
- 3Dゲームのプログラミングに役立つオススメ参考書ってありますか?
「ゲーム作りで学ぶ〜」は読んだんですが、3Dは文字通り次元が違って苦戦してます。
特に、カメラ制御・当たり判定について詳しく解説してあるとありがたいのですが・・・・・・
- 50 :
- あの外国のバカ高いやつでもいい?
- 51 :
- 普通のDirectXの本読むのがいいと思う
APIはだいたいXNAと同じだしC#わかるならちょっと勉強すればC++も十分読める
- 52 :
- 解説がないと分からないようではなぁ
頭が悪すぎだと思うからやめといたほうがいい
- 53 :
- >>49
もし2D→3Dの移行にベターな本があったら報告きぼん。
自分もゲーム作りで学ぶ〜は4,5冊読んだなかでわかりやすかったので
オススメしたけど、読んでみないとわからないしね。
てわけで3D初心者マニュアル本発掘の先駆者になってほしい。
- 54 :
- 本代はケチらずどんどん買うぐらいでいいんだがな。
- 55 :
- 当たり判定なら
ゲームプログラミングのためのリアルタイム衝突判定
ちょいと高いし、プログラミング始めたばかりだと読むの辛い気もする。
あと、XNA ならライブラリ側で実装されてるし、辞書にさえもならないだろうけど。
まあ、興味があれば。
- 56 :
- Visual C# 2008で使うXNAは3.1日本語版でいいでしょうか?
- 57 :
- >>56
おk
- 58 :
- おせーよ
- 59 :
- 4.0ってのに移行しなくてもべつにいいもんね
- 60 :
- 画面遷移について教えてください。
ゲームでは最初メニュー画面で何か選ぶとメインのゲーム画面に
いったりしますがこういうのはどう処理にするのがいいのでしょうか?
フォームなら新しいフォームをnewして自分を消せばいいのですが
そういうのじゃないですよね?
- 61 :
- >>60
そういう感覚で作れるように設計する。
http://create.msdn.com/ja-JP/education/catalog/sample/game_state_management
- 62 :
- >>61
うひょー
むっず。
- 63 :
- 自分は、gamestate変数をint型で用意して
gamestate=0がタイトル、1がオプション、2がステージ、、、10がゲームオーバー画面
みたく分けてやってるな。0のときスタートボタンで2に以降して
gamestate=2なのを条件にゲーム本編の処理を開始。
if (gamestate==2){処理内容、、、}みたいにでかい{}でそれぞれくくる。
ぜんぶUpdateメソッドに入ることになります。
- 64 :
- せめてenumにしようよ…
- 65 :
- boolですむところもintを使うのが初心者クオリティ
だって変数とわかりやすいんだモン
- 66 :
- boolも変数ですが
- 67 :
- >>65
それ、C# から始めればいいものをわざわざ C から教える教育の問題じゃないか?
- 68 :
- BOOLもintも型だよ
馬鹿は氏ね
- 69 :
- .NETのBooleanは気にしてはいけない型
実際は1バイト
- 70 :
- 今時1bitのbool型なんて存在しないだろ
詰め込みたいならビットマスクを隠蔽する関数群を使えって感じだろ。
それはともかく、boolにする意味はメモリの節約ではなく誤った代入などを防ぐため。
暗黙の変換をされちゃう言語だと意味ないが。
- 71 :
- >>70
誰か、boolが1ビットなんて言ってる? w
- 72 :
- 気にしてはいけないと書いたのはbool型が実際にメモリ上でどう表されるか気にしてはいけなという意味ね
わかりにくくてすまん
- 73 :
- こまけぇこたぁいいんだよ!!
- 74 :
- intの汎用性が高いので少数でもなければint使ってるけど
byteを使うほうが処理速度に影響するぐらいメモリは節約されますか?
- 75 :
- うーん、別に性能名はどうでもいいんだけども。
int を真偽値代わりに使うと、true == true が必ずしも true にならないとか、問題いっぱいある。
- 76 :
- 整数はintがほとんどでたまにlong使うくらいでintより小さいのはめったに使わないな
boolの代わりに使ったり>>63のようなマジックナンバーは論外だけど
- 77 :
- シーンもオブジェクトだと考えて、スタックで表現してるな。
タイトル、プレイ画面、ゲームオーバー画面みたいな大きなシーンの移動はClearしてPush、
ポーズ、オプション、ダイアログみたいな小さなシーンの移動は現在のスタックにPush。
public interface IScene { SceneResult Process(SceneResult result); }
public enum SceneResult : byte { None = 0x00, SuppressUpdate = 0x01, SuppressDraw = 0x02, StackTop = 0x80 }
シーンオブジェクトををこんな感じのインターフェイスにして、
private LinkedList<IScene> sceneStack = new LinkedList<IScene>();
private void OnUpdate()
{
var node = sceneStack.Last;
var result = SceneResult.StackTop;
while (node != null)
{
var scene = node.Value;
result = scene.Process(result);
node = node.Previous;
}
}
毎フレーム呼び出す。
ポーズ以下のUpdateを抑制したりするときはシーンの戻り値にSuppressUpdateフラグ立てておく、とか。
- 78 :
- >>76
マジックナンバーも本人が把握できてれば別にいいと思うけどなぁ。
- 79 :
- enumの型指定(: byteとか)は特に理由が無い限りはやらないほうがいいよ
MSのガイドラインで非推奨だし、その使い方だと特にメモリの節約にもならないだろうし
ベースがintであることを前提にできたほうが扱いやすい
- 80 :
- >>78
なぜダメかと言うと、本人も把握できなくなるからだ
- 81 :
- 把握できるかどうかは置いといて、わざわざマジックナンバーを使う意味がわからない
state = 10; //ゲームオーバー画面へ
と書くんだったら(コメントくらいは書いてると信じる)
state = GameState.GameOver;
と書いた方が楽じゃん
- 82 :
- どう書いたら楽かどうかは個人差あるからなんとも言えんな
- 83 :
- VisualStudioはemunで列挙した文字列に色とかつけてくれたっけ。
- 84 :
- プログラムとは少し違うんですがXNA関連で質問です。
xna creators club(サンプルがおいてあったサイト)が
app hubというサイトに変わっているようなのですが、
目的のサンプルを見つけきれません。探し方を教えていただけないでしょうか?
educationのcontent catalogにサンプルがおいてあるのはわかったのですが、
カテゴリを絞る検索手段のみで文字列での検索手段がありません。
全文検索はあるのですが、フォーラムなどが引っかかってしまいます。
- 85 :
- 公式サイトの質問なら公式フォーラムで聞いたほうがいんでない?
書き込み少ないからさ。。。
- 86 :
- すみません。XNAってモデルファイルを動的に読み込むことってできないのでしょうか?
- 87 :
- おまえならできる
- 88 :
- 動的にの意味が分からない。起動時じゃなくて必要になったときに初めて読み込みたい
という意味なら、必要な時にContentManager.Loadを呼ぶだけ。
コンテンツパイプラインを通したくないなら、読み込む処理を自分で書く必要がある。
その場合ModelMeshは使えないと思うので自分でメッシュクラスとモデルクラス自作。
お勧めはできない。
- 89 :
- えー
じゃあMMD作れないじゃんorz
- 90 :
- PCで実行するなら普通に生ファイル読み書きすればいいだろう
- 91 :
- PCで実行します!
- 92 :
- カス子使ってるニンジャチョップみたいのはどうやってるんだろう
- 93 :
- だから普通にファイルから読み込む処理書いて自前で描画するだけ。
XNAのModelは使えないけど、どうせMMDの仕様に合わせて
そこらへんの自作は必要でしょ。たぶん君にはそれは無理だけど
MMD for XNAというのがあるらしいから試してみたら。
- 94 :
- なるほど。Xファイルを自分で解析して頂点バッファを作って
プリミティブに描画するってことですね
- 95 :
- TimeSpanで時間を表示するとき、
(時間:分:秒.ミリ秒7ケタ)ではなく、
(分:秒:ミリ秒2ケタ)で表示することは可能でしょうか?
- 96 :
- 可能だけど、今はToString()かな?
String.Format使うとか
- 97 :
- メッシュってどういう単位でしょう?
メタセコに球と立方体を置いたとすると
メッシュが2個ってことでしょうか?
- 98 :
- >>97
髪の毛を一部脱色して白くする奴居るだろ?
あのような単位だよ。
- 99 :
- >>98
なるほど。わかりません。
- 100read 1read
- 1read 100read
TOP カテ一覧 スレ一覧 2ch元 削除依頼 ▲
・ 次のスレ
56: 構造化ウェブプログラミング言語Dart2 (549)
57: 【GPGPU】くだすれCUDAスレ part5【NVIDIA】 (251)
60: [Tips]Borland C++Builder ちょいテク No.01 (415)
61: プログラム板自治スレッド その3 (507)