スレタイはアプレットとの対比的な意味と考えてください。
Javaでのゲーム開発は賛否ありますが、国外では割と盛んになってきているように思います。
裏を返せば日本語だけでは情報が得辛い状況であり、寂しく開発してる人が多いのでは・・・。
関連スレ
JAVAアプリでゲーム
http://toro.2ch.net/test/read.cgi/gamedev/1033926010/
参考になりそうなサイト
・どのイメージタイプを使うべき?
http://weblogs.java.net/blog/chet/archive/2004/08/toolkitbuffered.html
・弱点と言われる?ベクタグラフィックス関連の改善
http://docs.oracle.com/javase/1.5.0/docs/guide/2d/flags.html
・大量のソースコードを公開して下さっている国内サイト
http://aidiary.hatenablog.com/entry/20040918/1251373370
・Java 2D games tutorial
http://zetcode.com/tutorials/javagamestutorial/
・出入りが最も盛んな?フォーラム
http://www.java-gaming.org/index.php
・スプライトシートの切り方等(国内)
http://sky.geocities.jp/kmaedam/java2/java2.htm
動画
3D Game Programming tutorial
・http://www.youtube.com/watch?v=iH1xpfOBN6M
Javaで作るスタンドアローンゲーム
■ このスレッドは過去ログ倉庫に格納されています
1名前は開発中のものです。
2012/12/27(木) 16:04:18.62ID:rl+qGRHn104名前は開発中のものです。
2013/01/19(土) 22:23:26.72ID:fS2RAsj1 必要か、必要でないかはアプリケーションの仕様が決める。
オブジェクト指向設計として何が望ましいかはまた別の話。
オブジェクト指向設計としては、定数が各コードに散らばるのは良くない。
そこんとこに拘るなら、ブロッククラスにRect持たせて、
コンストラクタでRectの幅と高さを定数値に初期化すれば
定数(final int BLOCK_SIZE)を使ってる部分を隔離できる。
オブジェクト指向設計として何が望ましいかはまた別の話。
オブジェクト指向設計としては、定数が各コードに散らばるのは良くない。
そこんとこに拘るなら、ブロッククラスにRect持たせて、
コンストラクタでRectの幅と高さを定数値に初期化すれば
定数(final int BLOCK_SIZE)を使ってる部分を隔離できる。
105名前は開発中のものです。
2013/01/19(土) 22:58:15.32ID:DHDneNpc106名前は開発中のものです。
2013/01/20(日) 00:17:41.28ID:4zHHxylz107名前は開発中のものです。
2013/01/20(日) 00:20:40.09ID:4zHHxylz まあオブジェクト指向設計とか一般論としてどうだろうと
質問者にとって良い回答をすべきだろうな。
質問者にとって良い回答をすべきだろうな。
108名前は開発中のものです。
2013/01/20(日) 02:37:11.99ID:nh4X0/d8109名前は開発中のものです。
2013/01/20(日) 04:42:00.77ID:/X06gwxp オブジェクトのサイズが小さくて移動速度がサイズより大きいような
場合はすり抜け対策しようねって話じゃなかったのか。
場合はすり抜け対策しようねって話じゃなかったのか。
110名前は開発中のものです。
2013/01/20(日) 08:45:04.14ID:Phml2DNM111名前は開発中のものです。
2013/01/21(月) 01:52:02.04ID:g1EOdFo1 ショボゲー製作中。
ttp://kie.nu/JdF
ttp://kie.nu/JdF
112名前は開発中のものです。
2013/01/21(月) 06:54:29.41ID:ryBrhTVB 一度だけ実行するときとかのラッチ回路?ってどうかくのがいいんでしょうか
自分はfieldにstaticなintを初期化して、メソッドをくぐれば1にするみたいな書き方をするのですが、
fieldまで遠かったり、それだけのために用意することにためらいがあります
自分はfieldにstaticなintを初期化して、メソッドをくぐれば1にするみたいな書き方をするのですが、
fieldまで遠かったり、それだけのために用意することにためらいがあります
113名前は開発中のものです。
2013/01/21(月) 12:30:21.04ID:g1EOdFo1 staticイニシャライザで済むなら
114名前は開発中のものです。
2013/01/22(火) 13:47:00.06ID:f+1h22s8 やってみたが升目あるゲームならrect基準にやるのありだなと思った
むしろ全マスにrectもたせても重くはならんのと違いますかね
マス目クラスにrectを継承させる
描画は
g.fill(this)か
g.draw(this)ですむ
移動しないブロックなら
コンストラクタの引数でsetBoundsして、必要なれば描画も用意
移動するブロックなら(もちろん自キャラでも)
升目クラス描画のところでsetBoundsすれば、スレッド走ってたらレクトも動いてくれる
そしてなにより、intersectsで判定してる様子を描画すると中二病に火がつくww
むしろ全マスにrectもたせても重くはならんのと違いますかね
マス目クラスにrectを継承させる
描画は
g.fill(this)か
g.draw(this)ですむ
移動しないブロックなら
コンストラクタの引数でsetBoundsして、必要なれば描画も用意
移動するブロックなら(もちろん自キャラでも)
升目クラス描画のところでsetBoundsすれば、スレッド走ってたらレクトも動いてくれる
そしてなにより、intersectsで判定してる様子を描画すると中二病に火がつくww
115名前は開発中のものです。
2013/01/22(火) 14:07:40.54ID:f+1h22s8 あ、もちろん画像なら画像を描画。
別に何もかもrectでやらんでいいがどうせextendsする予定のものがなければ、
継承したrectのwidthとかhight使うと良いんでない?
マップ全体が一つのオブジェクト的な設計より、1マス目事に判定が違うのだから1升目ごとをオブジェクトとみたほうがいいかも
ちなみにswing使って囲碁や将棋作るときってこの考えだよね
1升目をJComponentで作って、必要な数だけgridlayoutでしきつめる
これじゃアクションならさすがに重いからawtのrect使うと。
別に何もかもrectでやらんでいいがどうせextendsする予定のものがなければ、
継承したrectのwidthとかhight使うと良いんでない?
マップ全体が一つのオブジェクト的な設計より、1マス目事に判定が違うのだから1升目ごとをオブジェクトとみたほうがいいかも
ちなみにswing使って囲碁や将棋作るときってこの考えだよね
1升目をJComponentで作って、必要な数だけgridlayoutでしきつめる
これじゃアクションならさすがに重いからawtのrect使うと。
116名前は開発中のものです。
2013/01/22(火) 17:48:44.90ID:RDu6P5AG とりあえずお前等って何か作ってんの?
目的もなくあたり判定の練習とかしてもしょうがないぜ。
目的もなくあたり判定の練習とかしてもしょうがないぜ。
117名前は開発中のものです。
2013/01/22(火) 19:23:35.49ID:J/j3awaF やらない奴より100倍マシ
118名前は開発中のものです。
2013/01/23(水) 01:15:45.88ID:OcjBEIOU 質問なんだけど、MouseListenerやKeyListenerの処理を画面の描画の状態によって切り替えたい場合どうしてる?
例えば
private static final int TITLE = 0;
private static final int MENU = 1;
private static final int BATTLE = 2;
private int status;
private boolean getStatus() {
return status();
}
のように用意して、画面が遷移したらstatusに代入し、getStatus()の値によってswitch文で分けるとか?
もっと上手いやり方あったら教えて欲しい
ここが無駄にコードを膨らませてる気がする
例えば
private static final int TITLE = 0;
private static final int MENU = 1;
private static final int BATTLE = 2;
private int status;
private boolean getStatus() {
return status();
}
のように用意して、画面が遷移したらstatusに代入し、getStatus()の値によってswitch文で分けるとか?
もっと上手いやり方あったら教えて欲しい
ここが無駄にコードを膨らませてる気がする
119名前は開発中のものです。
2013/01/23(水) 01:32:11.34ID:7Y/TJ1Py120名前は開発中のものです。
2013/01/23(水) 02:31:45.51ID:Lru99+Rw121名前は開発中のものです。
2013/02/02(土) 17:38:30.08ID:5TmS7BCD もうダメだわw
Twitterサイバーテロ事件の原因は話題のJavaの脆弱性wwwww 今すぐアンインストールしろwwwww
http://engawa.2ch.net/test/read.cgi/poverty/1359787786/
Twitterサイバーテロ事件の原因は話題のJavaの脆弱性wwwww 今すぐアンインストールしろwwwww
http://engawa.2ch.net/test/read.cgi/poverty/1359787786/
122名前は開発中のものです。
2013/02/02(土) 19:57:25.02ID:ho+JptWp せやな
123名前は開発中のものです。
2013/02/02(土) 21:14:23.35ID:w8UuMgVB enumがStringだと向きとか困るな。
無名クラスで代用するのはどうよ?
abstract class Angle { int index; }
final Angle left = new Angle(0){};
final Angle right = new Angle(1){};
final Angle down = new Angle(2){};
final Angle up = new Angle(3){};
無名クラスで代用するのはどうよ?
abstract class Angle { int index; }
final Angle left = new Angle(0){};
final Angle right = new Angle(1){};
final Angle down = new Angle(2){};
final Angle up = new Angle(3){};
124名前は開発中のものです。
2013/02/02(土) 21:46:18.43ID:F8+ZpjXe Javaは危険だからインストールすらしてない
125名前は開発中のものです。
2013/02/02(土) 22:56:21.12ID:/ZPG5ns4 スタンドアロンゲームなんだからローカルで全権限与えて実行だろ
WEBの脆弱性とか関係無いんじゃないか?
WEBの脆弱性とか関係無いんじゃないか?
126名前は開発中のものです。
2013/02/02(土) 23:54:27.00ID:dS7Wgo8I >>125
彼らは馬鹿だからそういうの理解出来ないんだよ
彼らは馬鹿だからそういうの理解出来ないんだよ
127名前は開発中のものです。
2013/02/03(日) 00:45:51.50ID:yvoivLaM C/C++プログラマーのJavaのネガティブキャンペーンの一貫だな
128名前は開発中のものです。
2013/02/03(日) 01:19:45.37ID:tR9xZRWf >>127
全然関係ないが
全然関係ないが
129名前は開発中のものです。
2013/02/03(日) 10:21:42.46ID:4SWakuUQ 指摘された脆弱性50個のうち40個以上はJavaアプレットの脆弱性。
ブラウザでアプレットの実行をオフにしておけばほとんど影響ない。
そもそもJavaアプレット自体すでに時代遅れの手段で、使っている
サイトはほとんどない。某回線速度測定サイトはアプレットらしいが。
ブラウザでアプレットの実行をオフにしておけばほとんど影響ない。
そもそもJavaアプレット自体すでに時代遅れの手段で、使っている
サイトはほとんどない。某回線速度測定サイトはアプレットらしいが。
130名前は開発中のものです。
2013/02/03(日) 11:15:13.91ID:+zDTg20m ですがアプレットもまた元気になって欲しいですね
って、このスレッドを立てておいて言うのも申し訳ないのですが
http://www.java4k.com/
なるサイトを見つけまして、アプレットx基本APIx4k縛りなんていう面白そうなコンテストを毎年やってるみたいです
しかも中々熱い
アプレットを非難する意味で立てたスレッドじゃないということだけわかってくださいまし
って、このスレッドを立てておいて言うのも申し訳ないのですが
http://www.java4k.com/
なるサイトを見つけまして、アプレットx基本APIx4k縛りなんていう面白そうなコンテストを毎年やってるみたいです
しかも中々熱い
アプレットを非難する意味で立てたスレッドじゃないということだけわかってくださいまし
131名前は開発中のものです。
2013/02/03(日) 12:05:01.48ID:UF2FAEQp JREとインストールするとアプレットが動いてしまう事、
ブラウザでアプレットの実行をオフにしても起動する脆弱性、
これが問題になったんだろうけど、普通の人にはわけわからんわな。
ブラウザでアプレットの実行をオフにしても起動する脆弱性、
これが問題になったんだろうけど、普通の人にはわけわからんわな。
132名前は開発中のものです。
2013/02/03(日) 13:31:24.07ID:ySwMub6z 今回の脆弱性は最新版 update 13 で全部修正されていると考えていいの?
133名前は開発中のものです。
2013/02/03(日) 17:35:19.90ID:UF2FAEQp update 13のコントロールパネルでアプレットを動かないように指定できる。
でも一般人はそんなこと言われてもわからず、騒ぎ続ける。
C#がSilverLightを捨てたのは正解だったかもな。
でも一般人はそんなこと言われてもわからず、騒ぎ続ける。
C#がSilverLightを捨てたのは正解だったかもな。
134名前は開発中のものです。
2013/02/03(日) 23:55:32.89ID:Mbh8ibVn そもそもアプレットの話題はすれ違い
何のために>>1が重複スレともいえるこのスレを建てたか分からなくなる
何のために>>1が重複スレともいえるこのスレを建てたか分からなくなる
135名前は開発中のものです。
2013/02/09(土) 20:55:58.67ID:qUl0WJoZ 質問
自分でレンダリングする場合、敵だったり弾だったりのインスタンス化と描画の時差というか、タイミングはどうすればよいのですかね
原始的?な方法だと
10発撃てる→あらかじめ画面外に10発とも描画しておく→キー入力でsetter使って移動
みたいな感じですか。これは時差?が無いので描画メソッドもスッキリしそうです。
ですが、
まずキー入力→その結果インスタンス化→そして描画
という流れにしたい場合の描画メソッドはどのように書けばいいのですかね。
例えば、
ArrayList<Teki> tekiArray = new ArrayList<Teki>();
を用意しておき、キー入力を受けて
tekiArray.add(new Teki(...));
な設計での描画をどうするかということです。
if(tekiArray.size() != 0) {
for(int i=0; i<tekiArray.size(); i++) {
tekiArray.get(i).draw(g);
}
}
みたいなことも考えましたが、うーん・・・
自分でレンダリングする場合、敵だったり弾だったりのインスタンス化と描画の時差というか、タイミングはどうすればよいのですかね
原始的?な方法だと
10発撃てる→あらかじめ画面外に10発とも描画しておく→キー入力でsetter使って移動
みたいな感じですか。これは時差?が無いので描画メソッドもスッキリしそうです。
ですが、
まずキー入力→その結果インスタンス化→そして描画
という流れにしたい場合の描画メソッドはどのように書けばいいのですかね。
例えば、
ArrayList<Teki> tekiArray = new ArrayList<Teki>();
を用意しておき、キー入力を受けて
tekiArray.add(new Teki(...));
な設計での描画をどうするかということです。
if(tekiArray.size() != 0) {
for(int i=0; i<tekiArray.size(); i++) {
tekiArray.get(i).draw(g);
}
}
みたいなことも考えましたが、うーん・・・
136名前は開発中のものです。
2013/02/09(土) 22:14:33.38ID:WpmhzhIL 質問の意味が全く分からないんだが・・・
時差って何やねん?
時差って何やねん?
137名前は開発中のものです。
2013/02/09(土) 23:02:11.08ID:Wbmgsh6G 画面外にあるものを描画することはないだろ。
あらかじめインスタンスを弾の数だけ用意しておくのは正解。
画面の外に出た弾はフラグ立てて休ませておいて使いまわすのがよい。
休みフラグの立っている弾は当たり判定と描画をしないでreturn;。
発射時に毎回インスタンスを生成するのを避けるのは
ガベコレ持ち言語でSTG作るうえでの基本。
あらかじめインスタンスを弾の数だけ用意しておくのは正解。
画面の外に出た弾はフラグ立てて休ませておいて使いまわすのがよい。
休みフラグの立っている弾は当たり判定と描画をしないでreturn;。
発射時に毎回インスタンスを生成するのを避けるのは
ガベコレ持ち言語でSTG作るうえでの基本。
138名前は開発中のものです。
2013/02/09(土) 23:17:25.67ID:Wbmgsh6G 敵と敵の弾はどうだろうね。
ものすごい大群とかじゃなけりゃその都度new()+add()でいんじゃね?
どうせしょぼいもんだろうしな。
ものすごい大群とかじゃなけりゃその都度new()+add()でいんじゃね?
どうせしょぼいもんだろうしな。
139名前は開発中のものです。
2013/02/10(日) 01:33:03.92ID:Pq+qNEOO >>135 でいいと思うけど
その draw がどこから呼ばれるのかちょっとだけ気になったりする
その draw がどこから呼ばれるのかちょっとだけ気になったりする
140名前は開発中のものです。
2013/02/10(日) 04:16:31.60ID:WHx69qPW141名前は開発中のものです。
2013/02/10(日) 12:10:15.72ID:jiG/EP1U まずメインループがどうなってる?なんか怪しいぞ
142名前は開発中のものです。
2013/02/10(日) 12:54:26.23ID:WHx69qPW ???
143名前は開発中のものです。
2013/02/10(日) 13:24:56.51ID:F36VQJ9Y144名前は開発中のものです。
2013/02/10(日) 13:44:16.59ID:WHx69qPW メインループってRunnableのrun()メソッドのことかな・・・。
@Override
public void run() {
updateKey();
updateRendering();
}
みたいにキー入力をアップデイトしてからダブルバッファリングしてます
@Override
public void run() {
updateKey();
updateRendering();
}
みたいにキー入力をアップデイトしてからダブルバッファリングしてます
145名前は開発中のものです。
2013/02/10(日) 15:27:52.05ID:zG3XFfdb 俺は>>137の方法でやってるなぁ.自分の弾も,敵の弾も.
発射の都度にnewしたら,たくさん撃ったときにとても処理が遅くなったし.
発射の都度にnewしたら,たくさん撃ったときにとても処理が遅くなったし.
146名前は開発中のものです。
2013/02/10(日) 16:08:37.65ID:WHx69qPW >>145
確かに打つ瞬間が遅くなりますが、しかしその方法だとArrayList使う意味がないというか・・・
シューティングを例にあげたので、「初めから数を決めてnewしておく」が最善かと思いますが、
もしそのインスタンスの数がかなり多い場合を仮定すると、それはプログラム全体を重くしますよね?
それで移動だとかその他の処理の優先度を高くしたい場合致命的だと思うのです
確かに打つ瞬間が遅くなりますが、しかしその方法だとArrayList使う意味がないというか・・・
シューティングを例にあげたので、「初めから数を決めてnewしておく」が最善かと思いますが、
もしそのインスタンスの数がかなり多い場合を仮定すると、それはプログラム全体を重くしますよね?
それで移動だとかその他の処理の優先度を高くしたい場合致命的だと思うのです
147名前は開発中のものです。
2013/02/10(日) 16:13:08.41ID:bN2ZkHK3 シューティングで弾が多すぎる場合はむしろ処理落ちさせた方がいいんじゃない
避けれないし
避けれないし
148名前は開発中のものです。
2013/02/10(日) 16:55:26.05ID:veEgKXC1 昔はハードの都合で処理落ちしてたけど
それがむしろ迫力のある演出にもなっていたな。
>>146
メモリが枯渇すれば実行例外でアプリが強制終了。
たぶんオブジェクトを配列で100万超えたあたりから
あとメモリを確保する事自体は重さと全く関係ない。
新規確保+捨てるを繰り返すと重くなる。(捨てたものを回収するから
ならば1つのシーンとかステージの間、ずっと捨てなければ良いってのは
C#やJavaでゲーム作る際のコツ。
もし初心者でなければ、オブジェクトプールを作ればいい。
それがむしろ迫力のある演出にもなっていたな。
>>146
メモリが枯渇すれば実行例外でアプリが強制終了。
たぶんオブジェクトを配列で100万超えたあたりから
あとメモリを確保する事自体は重さと全く関係ない。
新規確保+捨てるを繰り返すと重くなる。(捨てたものを回収するから
ならば1つのシーンとかステージの間、ずっと捨てなければ良いってのは
C#やJavaでゲーム作る際のコツ。
もし初心者でなければ、オブジェクトプールを作ればいい。
149名前は開発中のものです。
2013/02/10(日) 17:03:17.27ID:veEgKXC1 あとArrayListでadd()したものをremove()していながら
速度がどうとかいってるのはおかしな話だと思う。
敵が1000いて、300番を1体remove()したら後ろ700体を詰めなおす処理が走るけど。
速度がどうとかいってるのはおかしな話だと思う。
敵が1000いて、300番を1体remove()したら後ろ700体を詰めなおす処理が走るけど。
150名前は開発中のものです。
2013/02/10(日) 21:13:15.85ID:WHx69qPW え!remove()したほうが重くなるんですか。
151名前は開発中のものです。
2013/02/10(日) 21:43:22.70ID:Uc/9fu94 >>150
それが中でどういう処理されてるか想像してるか?
それが中でどういう処理されてるか想像してるか?
152名前は開発中のものです。
2013/02/11(月) 18:11:27.91ID:GJsWhCTi153名前は開発中のものです。
2013/02/12(火) 20:08:58.69ID:lS9hcN8q そんな使い方したいならLinkedList使え
これならremove()しても軽いはず
これならremove()しても軽いはず
154名前は開発中のものです。
2013/02/19(火) 23:28:13.96ID:ZJutE4OQ JavaFX使ってますか?
155名前は開発中のものです。
2013/02/20(水) 18:26:13.94ID:MPmWlwS/ たま〜に使ってるけどゲーム開発には使ってませぬ
だけど8きたら使うかも
だけど8きたら使うかも
156名前は開発中のものです。
2013/03/04(月) 16:50:08.02ID:ut1yMHRq 壁とキャラの当たり判定難しい。タイルでするなら
if (map[y][x] == 1) {
return true;
} else {
return false;
}
だけど、ピクセルなどよくわからない。
if (map[y][x] == 1) {
return true;
} else {
return false;
}
だけど、ピクセルなどよくわからない。
157名前は開発中のものです。
2013/03/04(月) 17:15:36.43ID:0rLxVrMp >>156
ピクセル単位?と思ったが恐らくエスパーすると、矩形同士の交差判定をしたいのではと思った
物理的な接触はそうだが、でも論理レベルだとそのタイルと同じことだと思うよ
…最終的にどんな内容なのか知らないが
ピクセル単位?と思ったが恐らくエスパーすると、矩形同士の交差判定をしたいのではと思った
物理的な接触はそうだが、でも論理レベルだとそのタイルと同じことだと思うよ
…最終的にどんな内容なのか知らないが
158名前は開発中のものです。
2013/03/04(月) 18:05:20.38ID:ut1yMHRq すみません。Rectangleのやつではなく、
■■■■■■■
■ □ ■
■■■■■■■ のピクセル単位です。
Javaでゲーム作りますが何か?のやつで、
今現在、ドラクエみたいな全方向移動をピクセル単位で動かして当たり判定を書きたいと思っています。
そこのマリオで配布されているコードを写して、左右”だけ”の当たり判定をやろうとしたのですが挙動が変になりました。(判定なしは問題無し)
左の壁の判定は大丈夫なのですが、右へ行くと途中で何も無い空間で止まってしまいます。
yも下へある一定下がるとエラーがでます。y方向には何も変更は無いはずなのですがどうなっているのでしょうか?
public void update(){
x += vx; // 当たり判定実装の時は消す
vx = 0; // 上に同じ
y += vy; //
vy = 0; //
double newX = x + vx;
Point tile = map.getTileCollision(this, newX, y);
if (tile == null){
x = newX;
} else {
if (vx > 0){
x = Map.tilesToPixels(tile.x) - WIDTH; // 右の壁にぶつかる前に止まる。なんで?
} else if (vx < 0){
x = Map.tilesToPixels(tile.x + 1); // この左の壁の判定は大丈夫。けど数値を10とかにすると変になる
}
//vx = 0; // もともとあったけど、自分のやつじゃ動いてくれなかった。
}
vx = 0; //これで動く
}
■■■■■■■
■ □ ■
■■■■■■■ のピクセル単位です。
Javaでゲーム作りますが何か?のやつで、
今現在、ドラクエみたいな全方向移動をピクセル単位で動かして当たり判定を書きたいと思っています。
そこのマリオで配布されているコードを写して、左右”だけ”の当たり判定をやろうとしたのですが挙動が変になりました。(判定なしは問題無し)
左の壁の判定は大丈夫なのですが、右へ行くと途中で何も無い空間で止まってしまいます。
yも下へある一定下がるとエラーがでます。y方向には何も変更は無いはずなのですがどうなっているのでしょうか?
public void update(){
x += vx; // 当たり判定実装の時は消す
vx = 0; // 上に同じ
y += vy; //
vy = 0; //
double newX = x + vx;
Point tile = map.getTileCollision(this, newX, y);
if (tile == null){
x = newX;
} else {
if (vx > 0){
x = Map.tilesToPixels(tile.x) - WIDTH; // 右の壁にぶつかる前に止まる。なんで?
} else if (vx < 0){
x = Map.tilesToPixels(tile.x + 1); // この左の壁の判定は大丈夫。けど数値を10とかにすると変になる
}
//vx = 0; // もともとあったけど、自分のやつじゃ動いてくれなかった。
}
vx = 0; //これで動く
}
159名前は開発中のものです。
2013/03/05(火) 09:33:04.36ID:9UKwWdsd >>158
どういう計算とか、どういう処理が必要とか、そもそも具体的にイメージ出来てるか?
つまり、そのコードの全てのタイミングで、各々どういう計算でどうなればいい、と。
例えば、そのMapクラスのスタティックメンバみたいなメソッド、それ何やってるの?
普通に書くと、単純に式書いて終わりだと思うけど、その中だとか…
何も考えずにコピペ&丸投げとかダメだよ
どういう計算とか、どういう処理が必要とか、そもそも具体的にイメージ出来てるか?
つまり、そのコードの全てのタイミングで、各々どういう計算でどうなればいい、と。
例えば、そのMapクラスのスタティックメンバみたいなメソッド、それ何やってるの?
普通に書くと、単純に式書いて終わりだと思うけど、その中だとか…
何も考えずにコピペ&丸投げとかダメだよ
160名前は開発中のものです。
2013/03/05(火) 17:30:28.05ID:vAYNDQg9 キャラクターが1ピクセル単位で動くとしても
マップの当たり判定はマス毎にあるよね?(1マス=32x32ピクセルとか)
だからキャラクターサイズ(32x32)とマスのサイズ(32x32)で
判定するのをベースに、キャラクターのピクセル単位の移動を混ぜる感じになるのでは?
マップの当たり判定はマス毎にあるよね?(1マス=32x32ピクセルとか)
だからキャラクターサイズ(32x32)とマスのサイズ(32x32)で
判定するのをベースに、キャラクターのピクセル単位の移動を混ぜる感じになるのでは?
161名前は開発中のものです。
2013/03/05(火) 18:07:32.87ID:/vuQmpHV >>159, 160
確かに、コピペなどマズかったと思います。
そのサイトやdeveloping games in javaで図を使って説明されているので、何となくは理解しているつもりです。
なぜy方向に影響が出ているのかは分かりませんが
基本的にコードはそのままで数値を変えて学んでいるので、MAPクラスもそのサイト(javaでゲーム作りますが何か?)のマリオと同じです。
ttp://aidiary.hatenablog.com/entry/20050616/1255785698
キャラがピクセルで判定がマス毎ピクセルの混じりだから?難しいです。
タイルならまだ幾分やさしいのですが、動きがカクカクなのでピクセルにしたかったからです。
確かに、コピペなどマズかったと思います。
そのサイトやdeveloping games in javaで図を使って説明されているので、何となくは理解しているつもりです。
なぜy方向に影響が出ているのかは分かりませんが
基本的にコードはそのままで数値を変えて学んでいるので、MAPクラスもそのサイト(javaでゲーム作りますが何か?)のマリオと同じです。
ttp://aidiary.hatenablog.com/entry/20050616/1255785698
キャラがピクセルで判定がマス毎ピクセルの混じりだから?難しいです。
タイルならまだ幾分やさしいのですが、動きがカクカクなのでピクセルにしたかったからです。
162名前は開発中のものです。
2013/03/05(火) 21:58:35.97ID:z0yFi9Ty なんか勘違いしてるようだが、「タイルだからカクカク」で「ピクセルだから滑らか」ってのは君の思い込みだよ。
1マスごとの移動だってピクセルを基準に動かしているわけだが。
おそらくkeyPressedでフラグ立ててkeyReleasedでフラグ折って動かす場合とその判定をしないときの挙動をわかってない。
1マスごとの移動だってピクセルを基準に動かしているわけだが。
おそらくkeyPressedでフラグ立ててkeyReleasedでフラグ折って動かす場合とその判定をしないときの挙動をわかってない。
163名前は開発中のものです。
2013/03/05(火) 22:41:16.35ID:/vuQmpHV そうなのですか?なるほど、確かに1タイルは32X32ピクセルですね。
フラグってこれ?のことですか?keyReleased も同じみたいですが。
public void keyPressed(KeyEvent e){
int key = e.getKeyCode();
if (key == KeyEvent.VK_A){
leftPressed= true;
}
if (key == KeyEvent.VK_D){
rigtPressed= true;
}
if (key == KeyEvent.VK_W){
upPressed= true;
}
if (key == KeyEvent.VK_S){
downPressed= true;
}
}
フラグってこれ?のことですか?keyReleased も同じみたいですが。
public void keyPressed(KeyEvent e){
int key = e.getKeyCode();
if (key == KeyEvent.VK_A){
leftPressed= true;
}
if (key == KeyEvent.VK_D){
rigtPressed= true;
}
if (key == KeyEvent.VK_W){
upPressed= true;
}
if (key == KeyEvent.VK_S){
downPressed= true;
}
}
164名前は開発中のものです。
2013/03/05(火) 23:01:22.81ID:z0yFi9Ty >>163
そうそれ。
君がいう「カクカク」な状態って言うのは、そのフラグ判定してるところに直接移動メソッドを書いた場合のことっだとおもう
なぜかっていうとそのkeyPressedメソッドはupdate()されていないよね
だから「押している間動かす」ということをしたければ、キープレスでフラグtrue、キーリリースでフラグfalseにしておいて
メインループに書くupdate()メソッド内で移動処理するわけ
そうそれ。
君がいう「カクカク」な状態って言うのは、そのフラグ判定してるところに直接移動メソッドを書いた場合のことっだとおもう
なぜかっていうとそのkeyPressedメソッドはupdate()されていないよね
だから「押している間動かす」ということをしたければ、キープレスでフラグtrue、キーリリースでフラグfalseにしておいて
メインループに書くupdate()メソッド内で移動処理するわけ
165名前は開発中のものです。
2013/03/06(水) 18:23:56.13ID:25OFm7+P なるほど。
たしかに、それなら当たり判定はシンプルのままに出来そうですね。
お手本(サイトで配布されているコード)を見てもちょっと混乱してしまったので、もう一度Developing games in javaの当たり判定コードの理解を頑張りたいと思います。当たり判定って難しいです。
たしかに、それなら当たり判定はシンプルのままに出来そうですね。
お手本(サイトで配布されているコード)を見てもちょっと混乱してしまったので、もう一度Developing games in javaの当たり判定コードの理解を頑張りたいと思います。当たり判定って難しいです。
166名前は開発中のものです。
2013/03/09(土) 03:05:43.17ID:LK3aqlXO すごい簡単な話で
・移動判定はマス単位
・移動アニメーションはピクセル単位
にするだけじゃないのか?
・移動判定はマス単位
・移動アニメーションはピクセル単位
にするだけじゃないのか?
167名前は開発中のものです。
2013/03/09(土) 03:25:33.88ID:fdlPur7i いやそれだけじゃないと思う
十字キー押し続けると一回入力あってから少しディレイしてから連打?みたいな挙動になるでしょ?
ようするにこれを「カクカク」した状態と表現したのだと思うよ
だからmousePressedとmouseReleasedでフラグ判定して、メインループでtrueなら移動みたいに、押している間動くようにした状態をなめらかといっているはず
十字キー押し続けると一回入力あってから少しディレイしてから連打?みたいな挙動になるでしょ?
ようするにこれを「カクカク」した状態と表現したのだと思うよ
だからmousePressedとmouseReleasedでフラグ判定して、メインループでtrueなら移動みたいに、押している間動くようにした状態をなめらかといっているはず
168名前は開発中のものです。
2013/03/09(土) 07:39:04.60ID:fdlPur7i ぷよぷよ作ってるんだけど移動と回転をどう定義するといいだろうか
とりあえずやったのは
int[][] field = new int[12][6];
のようなフィールドを0に初期化して
int[][] puyo = new int[3][2];
を
for(int j=0; j<3; j++) {
for(int i=0; i<2; i++) {
if(i == 1) puyo[j][i] = 1;
}
}
のように初期化し、
010
010
で1のときに描画して、移動処理はfield[j+offsetY][i+offsetX] += puyo[j][i];
のようにした
だけどこれじゃプヨを右方向に動かしたらfieldの横幅を超えてしまうよね?だからエラーでてしまう。
C++だと同じやり方でエラーでないんだけど、もしかしてC++の場合は初期化したfieldの幅を超えたら勝手に広げてくれていたのかな?
Javaでこれをするにはどうしたらよいだろう
とりあえずやったのは
int[][] field = new int[12][6];
のようなフィールドを0に初期化して
int[][] puyo = new int[3][2];
を
for(int j=0; j<3; j++) {
for(int i=0; i<2; i++) {
if(i == 1) puyo[j][i] = 1;
}
}
のように初期化し、
010
010
で1のときに描画して、移動処理はfield[j+offsetY][i+offsetX] += puyo[j][i];
のようにした
だけどこれじゃプヨを右方向に動かしたらfieldの横幅を超えてしまうよね?だからエラーでてしまう。
C++だと同じやり方でエラーでないんだけど、もしかしてC++の場合は初期化したfieldの幅を超えたら勝手に広げてくれていたのかな?
Javaでこれをするにはどうしたらよいだろう
169名前は開発中のものです。
2013/03/09(土) 07:47:34.35ID:zFoVh09F >>166, 167,
それもあるのですが、マス(32X32)だと一歩歩くごとに32ピクセルも移動します。
ゼルダの時空の章などはもっと歩幅が小さい(1ピクセルとか?)のでマス移動だと「カクカク」してしまいます。
それもあるのですが、マス(32X32)だと一歩歩くごとに32ピクセルも移動します。
ゼルダの時空の章などはもっと歩幅が小さい(1ピクセルとか?)のでマス移動だと「カクカク」してしまいます。
170名前は開発中のものです。
2013/03/09(土) 09:00:20.72ID:P2CiH7FT171名前は開発中のものです。
2013/03/09(土) 11:43:02.11ID:0odFk7am172名前は開発中のものです。
2013/03/10(日) 00:01:43.20ID:KiVYlmzQ >>170
>offset足した値が横とか縦を越えていないかチェックしてはじけばいいのでは。
これ、自分も考えたんだけど、そのチェックに加えてpuyo配列自体の1の部分も1列横にシフトとかそういう面倒な操作いるよね・・
だから投げそうになったんだ
>>171
なるほど。だけどそれでもかなり大変なコードになりそうだ・・・。見えているゲーム領域の左上とfield[0][0]が対応しなくなるよねきっと。
やっぱC言語ちっくなpuyoをint型にするような設計はよくないのかな。
fieldの値を基準にpuyoを描画するんじゃなくて、Puyoクラスを作って独立させて描画させるべきか。
でもfieldの状態を更新するのが難しくなりそう・・・
>offset足した値が横とか縦を越えていないかチェックしてはじけばいいのでは。
これ、自分も考えたんだけど、そのチェックに加えてpuyo配列自体の1の部分も1列横にシフトとかそういう面倒な操作いるよね・・
だから投げそうになったんだ
>>171
なるほど。だけどそれでもかなり大変なコードになりそうだ・・・。見えているゲーム領域の左上とfield[0][0]が対応しなくなるよねきっと。
やっぱC言語ちっくなpuyoをint型にするような設計はよくないのかな。
fieldの値を基準にpuyoを描画するんじゃなくて、Puyoクラスを作って独立させて描画させるべきか。
でもfieldの状態を更新するのが難しくなりそう・・・
173名前は開発中のものです。
2013/03/10(日) 06:42:22.32ID:QFv44VdC 質問。
http://aidiary.hatenablog.com/entry/20050624/1255786339で、マリオにファイヤーボールを出させたい。
(^o) 〜〜@ な感じ。
どうやったらマリオの場所をスクロール中の画面の場所を特定できるようになるのだろうか?
マップスクロールで大幅に横に移動するー>現在のマリオ場所をとって来るー>ボールにその位置を入力ー>発射ー>ボールは画面外。
ーーーーーーーーーーーーーーーーー
| (^o) 〜〜|@ <- ボールは画面外
| |
ーーーーーーーーーーーーーーーーー
ボールのクラスで
public void setPos(double x, double y) { // 位置設定
this.x = x;
this.y = y;
}
MainPanelクラスで
Point posX = player.getPos()
weapon.setPos(posX.x + player.getWidth() / 2, posX.y); // posX.x -> 現在のx座標、posX.y -> y座標
これだと、右にいくほどボールの発射場所がマリオから右に遠のいてしまう。
http://aidiary.hatenablog.com/entry/20050624/1255786339で、マリオにファイヤーボールを出させたい。
(^o) 〜〜@ な感じ。
どうやったらマリオの場所をスクロール中の画面の場所を特定できるようになるのだろうか?
マップスクロールで大幅に横に移動するー>現在のマリオ場所をとって来るー>ボールにその位置を入力ー>発射ー>ボールは画面外。
ーーーーーーーーーーーーーーーーー
| (^o) 〜〜|@ <- ボールは画面外
| |
ーーーーーーーーーーーーーーーーー
ボールのクラスで
public void setPos(double x, double y) { // 位置設定
this.x = x;
this.y = y;
}
MainPanelクラスで
Point posX = player.getPos()
weapon.setPos(posX.x + player.getWidth() / 2, posX.y); // posX.x -> 現在のx座標、posX.y -> y座標
これだと、右にいくほどボールの発射場所がマリオから右に遠のいてしまう。
174名前は開発中のものです。
2013/03/10(日) 07:15:40.28ID:G1JW1DEQ if(puyo.x % 32 == 0){ // マスのサイズで割った余り0 or not
check(map[x][y]);
}else{
check(map[x][y]);
check(map[x+1][y]);
}
Java以前の初心者スレ化してしまったな。
DXライブラリスレなみのレベルとはなさけない。
check(map[x][y]);
}else{
check(map[x][y]);
check(map[x+1][y]);
}
Java以前の初心者スレ化してしまったな。
DXライブラリスレなみのレベルとはなさけない。
175名前は開発中のものです。
2013/03/10(日) 08:53:11.38ID:QFv44VdC 解決しました。
ボールのdraw()にマップスクロール時の座標を書き入れていなかったらかでした。
ボールのdraw()にマップスクロール時の座標を書き入れていなかったらかでした。
176名前は開発中のものです。
2013/03/10(日) 20:29:07.98ID:QFv44VdC ボール発射時:左に向いていたら ー> 左へボール飛んでいく x-= 6;
右に向いていたら ー> 右へボール飛んでいく x+= 6;
private void keyConfiguration() {
if (leftPressed) {
player.move(LEFT);
} else if (rightPressed) { でキーを拾って
public void move(int dir) {
if (dir == LEFT) {
vx = -SPEED;
direction = LEFT; // face to left
} else if (dir == RIGHT) {
vx = SPEED;
direction = RIGHT; // face to right でプレイヤーの向きは分かった。
public void move() {
if (isInStorage()) {
return; // do nothing}
if (player.direction == LEFT){
x -= SPEED;}
if (player.direction == RIGHT){
x += SPEED;}
if (y < 0 || y < -(panel.scrolledHeight())) {
store();
}
コンパイルはokみたいで実行したら
Exception in thread "Thread-2" java.lang.NullPointerException
at theLastSamurai.Weapon.move(Weapon.java:51)
at theLastSamurai.MainPanel.run(MainPanel.java:80)
at java.lang.Thread.run(Thread.java:679) 何故?
右に向いていたら ー> 右へボール飛んでいく x+= 6;
private void keyConfiguration() {
if (leftPressed) {
player.move(LEFT);
} else if (rightPressed) { でキーを拾って
public void move(int dir) {
if (dir == LEFT) {
vx = -SPEED;
direction = LEFT; // face to left
} else if (dir == RIGHT) {
vx = SPEED;
direction = RIGHT; // face to right でプレイヤーの向きは分かった。
public void move() {
if (isInStorage()) {
return; // do nothing}
if (player.direction == LEFT){
x -= SPEED;}
if (player.direction == RIGHT){
x += SPEED;}
if (y < 0 || y < -(panel.scrolledHeight())) {
store();
}
コンパイルはokみたいで実行したら
Exception in thread "Thread-2" java.lang.NullPointerException
at theLastSamurai.Weapon.move(Weapon.java:51)
at theLastSamurai.MainPanel.run(MainPanel.java:80)
at java.lang.Thread.run(Thread.java:679) 何故?
177名前は開発中のものです。
2013/03/10(日) 21:25:31.59ID:G1JW1DEQ 初心者以前に馬鹿じゃねえの。
例外のスタックトレースも読めないとか池沼か。
例外のスタックトレースも読めないとか池沼か。
178名前は開発中のものです。
2013/03/10(日) 22:04:44.96ID:pLC1ThRb javaでRPGをつくりたいのだが、画像の素材は、どこかにかありませんかな
gif,pngの32x32の画像がいい
unityってゲームつくりには役に立つ?
gif,pngの32x32の画像がいい
unityってゲームつくりには役に立つ?
179名前は開発中のものです。
2013/03/10(日) 23:16:48.90ID:G1JW1DEQ そうかもしれないし、そうじゃないかもしれない。
180名前は開発中のものです。
2013/03/10(日) 23:19:48.97ID:nHCM+efj ツクール素材でもググってみれば
181名前は開発中のものです。
2013/03/13(水) 21:25:47.68ID:XNwjXgJc javaをやっていると体にわるいな
過労死、鬱病、倒れそうだ
過労死、鬱病、倒れそうだ
182名前は開発中のものです。
2013/03/13(水) 22:20:25.22ID:WmJDWgdc javaに関する本を何冊持っていますか?
Javaの本高くて困ります
今の時代amazonがあるから助かっているけどそれでも本代はかさむ
このデフレ時代、値段が下がらなかったのは本と税金、社会保障費ですかね
Javaの本高くて困ります
今の時代amazonがあるから助かっているけどそれでも本代はかさむ
このデフレ時代、値段が下がらなかったのは本と税金、社会保障費ですかね
183名前は開発中のものです。
2013/03/13(水) 22:45:21.50ID:NdWAfqh4 良い本知ってるがこれでは教える気にならんな
184名前は開発中のものです。
2013/03/14(木) 01:08:10.88ID:nocQ9en/ >>182
とりあえず三冊かな
とりあえず三冊かな
185名前は開発中のものです。
2013/03/14(木) 01:50:02.10ID:yH7ud9UQ ほとんどネットで十分だからな。
結城のデザインパターンとか役にたたないし、
パーフェクトJavaとサーブレット関連、アンドロイド関連で合計3冊あれば良いだろう。
結城のデザインパターンとか役にたたないし、
パーフェクトJavaとサーブレット関連、アンドロイド関連で合計3冊あれば良いだろう。
186名前は開発中のものです。
2013/03/24(日) 02:38:51.86ID:ua68AVRh ゲームはC++がメイン?
JAVAはサーバーに使われるのがメインですか?
JAVAはサーバーに使われるのがメインですか?
187名前は開発中のものです。
2013/03/24(日) 04:27:20.54ID:crOzGDtU そうかもしれないし、そうじゃないかもしれない。
188名前は開発中のものです。
2013/03/24(日) 07:28:35.65ID:dL5F+tAI 初めJavaでゲーム作るのが難しく感じたけど今やC++よりやりやすく感じる俺は。
やっぱC++はGUIが面白くないしわざわざWINAPI弄ろうという気にもならないしモチベ下がる
あとクラスに分けてちゃんと作っていこうとするとJavaのほうが管理しやすいから好きだ
やっぱC++はGUIが面白くないしわざわざWINAPI弄ろうという気にもならないしモチベ下がる
あとクラスに分けてちゃんと作っていこうとするとJavaのほうが管理しやすいから好きだ
189名前は開発中のものです。
2013/03/24(日) 21:13:37.97ID:wYx6jnbT >>188
それってJavaが良いわけじゃなくて、Swingとかの
GUIライブラリとか良いってだけじゃん
C++だってクロスプラットフォームのGUIライブラリはあるだろ?
この部分は別にJavaならではって感じがしない
それってJavaが良いわけじゃなくて、Swingとかの
GUIライブラリとか良いってだけじゃん
C++だってクロスプラットフォームのGUIライブラリはあるだろ?
この部分は別にJavaならではって感じがしない
190名前は開発中のものです。
2013/03/25(月) 07:26:50.10ID:Qbfd/Wlz191名前は開発中のものです。
2013/03/25(月) 22:48:08.00ID:+DXzcTUj マインクラフトみたいなゲームを作りたい。2Dで。
ttps://s3.amazonaws.com/ld48/ld22/index.html
今、プレイヤーとマップは一応出来ている。
プレイヤーに攻撃値を持たせて、壊せるオブジェクト(敵も含める)に耐久値を設定する。
耐久値が0になったら決まったアイテムを落とす。
仮にオブジェがいっぱいあったとして、毎回一個ずつ確認していくのは何か変だ。
こんなゲームを作るときはどうしてます?
ttps://s3.amazonaws.com/ld48/ld22/index.html
今、プレイヤーとマップは一応出来ている。
プレイヤーに攻撃値を持たせて、壊せるオブジェクト(敵も含める)に耐久値を設定する。
耐久値が0になったら決まったアイテムを落とす。
仮にオブジェがいっぱいあったとして、毎回一個ずつ確認していくのは何か変だ。
こんなゲームを作るときはどうしてます?
192名前は開発中のものです。
2013/03/25(月) 23:28:51.88ID:7w1M9Wru 何を確認すんの?
193名前は開発中のものです。
2013/03/25(月) 23:33:00.13ID:e+5SoecM kdツリーとかRツリーとかオクツリーとかBSPとかそのへんじゃない
194名前は開発中のものです。
2013/03/26(火) 02:48:42.95ID:IUgsCEv1 超巨大な一枚マップを8x8分割とかして、各区画オブジェクトがそこにいる
全ての人物などの参照をもっていれば良い。
それでプレイヤーのいる区画以外の全てのオブジェクトを無視できる。
全ての人物などの参照をもっていれば良い。
それでプレイヤーのいる区画以外の全てのオブジェクトを無視できる。
195名前は開発中のものです。
2013/03/26(火) 06:29:02.73ID:CLcgDKur 二分岐探索や二分ヒープ木はhaskellですこし触ったことがある程度。
色々な木を勉強します。
>> 194
もう少し詳しく教えてもらえないでしょうか?
マップを分割することによってオブジェクトの状態検査の数が減るー>メモリ節約?
もしくは、画面に映っているヤツら(プレイヤーからの距離計算で出す)
だけ判定に渡す。<-結局全てのモノを判定しているからボツ?
色々な木を勉強します。
>> 194
もう少し詳しく教えてもらえないでしょうか?
マップを分割することによってオブジェクトの状態検査の数が減るー>メモリ節約?
もしくは、画面に映っているヤツら(プレイヤーからの距離計算で出す)
だけ判定に渡す。<-結局全てのモノを判定しているからボツ?
196名前は開発中のものです。
2013/03/26(火) 10:09:24.68ID:l0lOFTp+197名前は開発中のものです。
2013/03/26(火) 14:17:30.58ID:IUgsCEv1 >>195
あなたの文章がおかしくて推測に苦労しますが、
例えば巨大マップ上に数万のキャラクターがいて、
forループで全部更新するのが重いという話でしょう?
画面外の、それまた遠くにいるようなのが完全に停止していても良いとか、
ゲームの内容しだいで条件もかわるわけで、なんともいえませんなー。
あなたの文章がおかしくて推測に苦労しますが、
例えば巨大マップ上に数万のキャラクターがいて、
forループで全部更新するのが重いという話でしょう?
画面外の、それまた遠くにいるようなのが完全に停止していても良いとか、
ゲームの内容しだいで条件もかわるわけで、なんともいえませんなー。
198名前は開発中のものです。
2013/03/27(水) 07:28:58.94ID:f6Hx9aPx そうです。
ま〜マインクラフトやゼルダの伝説時空の章などは画面外では完全に停止していると思います。
それで、
敵やオブジェクトが画面内に入った時だけ動くだとうと推測しているノですが。
ま〜マインクラフトやゼルダの伝説時空の章などは画面外では完全に停止していると思います。
それで、
敵やオブジェクトが画面内に入った時だけ動くだとうと推測しているノですが。
199名前は開発中のものです。
2013/03/27(水) 19:51:56.53ID:4U1a8RUn マップが1000万x1000万だとして、それを1万x1万エリアに分割すると、1エリアの大きさは1000x1000になる。
それでプレイヤーがいる1エリア内(1000x1000)だけを更新するとすれば次のような形になるはず。
class GameMap {
Area[][] area2D = ...;
}
class Area {
final Point index;// (GameMap.area2D[index.x][index.y] == this)
List<Enemy> enemyList; // エリア内にいるモンスター
List<Item> itemList; // エリア内にいるアイテム
}
Player {
Area area = GameMap.area2D[0][0];
}
class GameScene {
void onUpdate(){
Player player = ApplicationScope.getPlayer();
Area area = player.area;
// プレイヤーのいるエリアを更新する
for(Enemy e : area.enemyList){ ... }
// 例えばプレイヤーがエリア内で西側にいる場合、プレイヤーのいるエリアからひとつ西側にあるエリアも更新する
if(...) {
Area west = GameMap.area2D[area.index.x-1][area.index.y];
for(Enemy e : west.enemyList){ ... }
}
}
}
それでプレイヤーがいる1エリア内(1000x1000)だけを更新するとすれば次のような形になるはず。
class GameMap {
Area[][] area2D = ...;
}
class Area {
final Point index;// (GameMap.area2D[index.x][index.y] == this)
List<Enemy> enemyList; // エリア内にいるモンスター
List<Item> itemList; // エリア内にいるアイテム
}
Player {
Area area = GameMap.area2D[0][0];
}
class GameScene {
void onUpdate(){
Player player = ApplicationScope.getPlayer();
Area area = player.area;
// プレイヤーのいるエリアを更新する
for(Enemy e : area.enemyList){ ... }
// 例えばプレイヤーがエリア内で西側にいる場合、プレイヤーのいるエリアからひとつ西側にあるエリアも更新する
if(...) {
Area west = GameMap.area2D[area.index.x-1][area.index.y];
for(Enemy e : west.enemyList){ ... }
}
}
}
200名前は開発中のものです。
2013/03/27(水) 21:37:10.40ID:f6Hx9aPx おお。すごい!
こんなに丁寧に書いていただきありがとうございます。
これだと、quadtreeを使わなくて済みそうかな?
よし、これで頑張ってみようと思います。
こんなに丁寧に書いていただきありがとうございます。
これだと、quadtreeを使わなくて済みそうかな?
よし、これで頑張ってみようと思います。
201名前は開発中のものです。
2013/03/29(金) 14:13:20.69ID:ygLK74i7 ゲームボーイの”くにおくん”の様に攻撃ボタンを押した時だけ
キャラの横(キャラの向き)に攻撃画像が表示される。
そしてもし敵がその範囲内であれば敵がダメージを受けるような事をしたいです。
インベーダーの様に弾に攻撃オブジェをいっぱい最初に作って画面外に置いて、
攻撃が呼ばれるたびにそれを取り出す方法ぐらいしか分からないです。
本来?はどうやればいいのでしょうか?
キャラの横(キャラの向き)に攻撃画像が表示される。
そしてもし敵がその範囲内であれば敵がダメージを受けるような事をしたいです。
インベーダーの様に弾に攻撃オブジェをいっぱい最初に作って画面外に置いて、
攻撃が呼ばれるたびにそれを取り出す方法ぐらいしか分からないです。
本来?はどうやればいいのでしょうか?
202名前は開発中のものです。
2013/03/30(土) 22:57:51.86ID:ecRAb5Av >>200の人だろうか。まあがんばれよ。
203名前は開発中のものです。
2013/03/31(日) 08:56:54.87ID:C9rWy5ii 自分はまだ199で教えてもらったのを勉強してるところですが.
は〜、早くマインクラフトやゼルダみたいなの作りたい。
は〜、早くマインクラフトやゼルダみたいなの作りたい。
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 竹中平蔵氏 トランプ米大統領は日本の「敵」 「人類の叡智(えいち)を否定している」 [首都圏の虎★]
- 女性の“痩せたい”願望 20代女性の5人に1人が低体重で学会が警鐘…「痩せてた方がビジュがいい」「男性にも責任がある」マチの意見 [首都圏の虎★]
- 備蓄米、小売店へ流通しているのは放出量の1.97%どまり ★3 [お断り★]
- 日本経済低迷の理由は日本人の意地悪さ説、前澤友作氏が私見「よく分かる」 [少考さん★]
- 【福岡市博物館】28歳中国籍の女を現行犯逮捕 「鬼滅の刃」特別展で限定バッジ買い占めようとして断られ激高→45歳女性スタッフに暴行か [ぐれ★]
- 石破首相、消費税減税に慎重姿勢 新たな経済対策「現時点で考えず」 [首都圏の虎★]
- 【実況】博衣こよりのえちえちロックマンX4🧪
- 【実況】博衣こよりのえちえちロックマンX5🧪
- 【−0.3%】アメリカGDP大きく減速w繰り返す大きく減速www円高くる~~~ [993451824]
- 【悲報】中日ドラゴンズ、2アウト満塁でバントして全国民大騒ぎ [765383483]
- 米議員「白うさぎと黒うさぎが結婚する絵本…あの、これさ、異人種間結婚の推奨って事?もしかしたら…」 米保守派「ほぼそれに近い」 [878970802]
- ▶白上フブキのちょうどいいおっぱい好き部