スレタイはアプレットとの対比的な意味と考えてください。
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+qGRHn2013/01/06(日) 01:03:10.14ID:TLA3zZTm
>>57
出来と言語は関係ねーぜ。
出来と言語は関係ねーぜ。
2013/01/06(日) 02:44:54.43ID:3UF0yBuP
>>57
まぁ、考えかた次第だし何を求めているかだけどな。やっぱり、C++/Cで出来るのに、Javaでは出来ない事も多い。
それして、Windowsなら、似たように(場合によっては更に簡単に、)C#でもっと高クオリティのが作れる。
Javaは色々な機器で動かせるようにはできてるけど、ゲームでresponse早くして、高画質とかを求めると
それようにその機器向けにチューンナップが必要で、その点Microsoftはガチでやってるからそこにはまだまだ勝てない。
でも、一般的なゲーム(商用含む)でも、そこまでガチなものを作る事はないけどな。
HD+でfps60出すぐらいなら、ライブラリの呼び出し方一本で大抵済むし、
そして、その位の性能だったら今のPCなら Windows/Mac/Linux どれでもJavaで十分イケル。
というか、Pythonとかのもっと軽い言語でも、ライブラリを適時呼び出して上手いことやればいいだけなので、出来るしな。
大雑把な値として経験から、JavaでWindows Gameを作るのと比較すると、
C#(XNA)との差は軽いゲームで5%強遅く、重めでキツイ処理入れ出すと20%弱ぐらい遅くなる。
さらに、C++ でガチでやるのと比べると、1/3〜1/5ぐらいしか性能でない。
・ C++/C(GPU) >> C# ≧ Java > LL系
ただし、C++はガチでやり出すとメモリ管理も含め資源の調整とかGPU向けの細かい指定とかとか、
ただでさえ、開発期間と知識が求められる上に、コンパイル時間とか半端ない・・・・・・。
実際に比べるのは不可能だけど、少なめに見ても、開発時間は30倍は堅い。
やっぱし大手のガチProjectじゃないとできないし、結局それなら、普通にMiddleWareを買ってきた方が良い。
(Programmerは楽とは限らないがwww orz)
まぁ、考えかた次第だし何を求めているかだけどな。やっぱり、C++/Cで出来るのに、Javaでは出来ない事も多い。
それして、Windowsなら、似たように(場合によっては更に簡単に、)C#でもっと高クオリティのが作れる。
Javaは色々な機器で動かせるようにはできてるけど、ゲームでresponse早くして、高画質とかを求めると
それようにその機器向けにチューンナップが必要で、その点Microsoftはガチでやってるからそこにはまだまだ勝てない。
でも、一般的なゲーム(商用含む)でも、そこまでガチなものを作る事はないけどな。
HD+でfps60出すぐらいなら、ライブラリの呼び出し方一本で大抵済むし、
そして、その位の性能だったら今のPCなら Windows/Mac/Linux どれでもJavaで十分イケル。
というか、Pythonとかのもっと軽い言語でも、ライブラリを適時呼び出して上手いことやればいいだけなので、出来るしな。
大雑把な値として経験から、JavaでWindows Gameを作るのと比較すると、
C#(XNA)との差は軽いゲームで5%強遅く、重めでキツイ処理入れ出すと20%弱ぐらい遅くなる。
さらに、C++ でガチでやるのと比べると、1/3〜1/5ぐらいしか性能でない。
・ C++/C(GPU) >> C# ≧ Java > LL系
ただし、C++はガチでやり出すとメモリ管理も含め資源の調整とかGPU向けの細かい指定とかとか、
ただでさえ、開発期間と知識が求められる上に、コンパイル時間とか半端ない・・・・・・。
実際に比べるのは不可能だけど、少なめに見ても、開発時間は30倍は堅い。
やっぱし大手のガチProjectじゃないとできないし、結局それなら、普通にMiddleWareを買ってきた方が良い。
(Programmerは楽とは限らないがwww orz)
2013/01/06(日) 14:46:29.78ID:WWISgZLW
JavaSE7からAWTとSwingが混ぜて使えるようになったってホント?
2013/01/06(日) 15:19:47.88ID:WWISgZLW
2013/01/06(日) 17:12:28.42ID:fwb+peuo
AWTとSwing混ぜる必要ある?
それよりもSWTとSwing混ぜて使えるようにしてほしい
それよりもSWTとSwing混ぜて使えるようにしてほしい
2013/01/08(火) 12:22:51.60ID:j4bi2qlI
ディプロマシー系統っていうのかわからんけど
このぐらいのゲームなら簡単に作れそうだ
ttp://clovergames.3zoku.com/game.html
このぐらいのゲームなら簡単に作れそうだ
ttp://clovergames.3zoku.com/game.html
2013/01/09(水) 00:13:31.24ID:01Ag3FRy
idによって違うイメージがdrawされるってのはやりたいことは
なんとなくわかるんだけど設計としては評価しづらいな。
なんとなくわかるんだけど設計としては評価しづらいな。
2013/01/09(水) 10:01:05.86ID:+AhcB4EJ
ImageとかTextureとかSoundもってるオブジェクトをセーブするとか?
XML形式だと入らないだろうし、Serializeしてバイナリで吐いても素材分巨大化する
XML形式だと入らないだろうし、Serializeしてバイナリで吐いても素材分巨大化する
2013/01/10(木) 20:00:43.65ID:Z8txJRHv
JMF使おうかと思ってたけどいまいちだな。
midiはJDKに入ってるJavaSound、MP3はこのライブラリが使いやすそう。
ttp://www.javazoom.net/mp3spi/mp3spi.html
あとは.wavが使えるものがあれば十分なはず。
midiはJDKに入ってるJavaSound、MP3はこのライブラリが使いやすそう。
ttp://www.javazoom.net/mp3spi/mp3spi.html
あとは.wavが使えるものがあれば十分なはず。
2013/01/10(木) 20:17:21.39ID:Z8txJRHv
wavはjavax.soundで普通にならせるようだ
2013/01/13(日) 12:30:28.95ID:lTSbLWgL
swingのルックアンドフィールってsubstanceの他にいいのある?
2013/01/14(月) 19:15:31.00ID:ZaVCszmy
>>62
>それよりもSWTとSwing混ぜて使えるようにしてほしい
謎杉。何がしたいの?
アクションにも対応できる骨格をまともに作ろうとするとawt要素が増えてくるよね
自分でレンダリングするならbufferstragegy使わないと損だし。
そしてSWT使うならダブルバッファリングするのは当然だ
何が言いたいって、awtはゲーム開発において偉大だということ。
これは低速GUIと呼ばれるSwingと対比してではない。
>それよりもSWTとSwing混ぜて使えるようにしてほしい
謎杉。何がしたいの?
アクションにも対応できる骨格をまともに作ろうとするとawt要素が増えてくるよね
自分でレンダリングするならbufferstragegy使わないと損だし。
そしてSWT使うならダブルバッファリングするのは当然だ
何が言いたいって、awtはゲーム開発において偉大だということ。
これは低速GUIと呼ばれるSwingと対比してではない。
2013/01/14(月) 20:26:39.35ID:7Mvy01UC
OpenGL使うならフレームワークとか使うだろうし
今更awtとかswtを直接使う人いないんじゃないの?
今更awtとかswtを直接使う人いないんじゃないの?
2013/01/15(火) 01:15:38.71ID:MWRm0sFJ
当たり判定について教えて欲しいのですが、
壁にめり込む前に修正してやるのか、とりあえず動いてみてめり込んでいたら修正するのかどっちがいいのでしょうか
前者の場合、
(壁までの距離)<(1フレームで動ける距離)のとき、壁との距離分だけ動かす かな?
こっちのほうが何だかカッコイイ気もするけど、何か自由度が下がりそうな気がするんですよね
ただ後者は楽だけど、めり込んだ瞬間にアクション起こされた時の対策を加えないといけないですよね
壁にめり込む前に修正してやるのか、とりあえず動いてみてめり込んでいたら修正するのかどっちがいいのでしょうか
前者の場合、
(壁までの距離)<(1フレームで動ける距離)のとき、壁との距離分だけ動かす かな?
こっちのほうが何だかカッコイイ気もするけど、何か自由度が下がりそうな気がするんですよね
ただ後者は楽だけど、めり込んだ瞬間にアクション起こされた時の対策を加えないといけないですよね
2013/01/15(火) 13:28:47.99ID:2cbm43tf
STGだろうか。。。
・全てのオブジェクトの移動前と移動後(予定)の座標を取得する
・当たり判定
・予定通り動かす or 衝突アクション
マウスでドラッグしながら塗るようなアプリ(マップエディタとか)だと
マウスの座標現在値だけでやると早くマウスを動かしたときに
ドラッグ間の線が途切れるんだよね。そんなときにもこのやり方が役に立つ。
・全てのオブジェクトの移動前と移動後(予定)の座標を取得する
・当たり判定
・予定通り動かす or 衝突アクション
マウスでドラッグしながら塗るようなアプリ(マップエディタとか)だと
マウスの座標現在値だけでやると早くマウスを動かしたときに
ドラッグ間の線が途切れるんだよね。そんなときにもこのやり方が役に立つ。
2013/01/15(火) 21:16:07.30ID:+k1g4zRO
2013/01/15(火) 22:04:46.84ID:2cbm43tf
動きが速いとすり抜けたりしない?
7573
2013/01/16(水) 00:12:37.78ID:FvBTwx9m >>74
俺の場合は,衝突判定オブジェクトは球とか単純な形状のみでやってて,
例えば移動球同士の場合は,相対距離(の二乗)を
時刻tを変数とした二次方程式で表して,それを解くような感じでやってる.
なので基本的には,すり抜けはおきない.はず.(バグってなければ)
俺の場合は,衝突判定オブジェクトは球とか単純な形状のみでやってて,
例えば移動球同士の場合は,相対距離(の二乗)を
時刻tを変数とした二次方程式で表して,それを解くような感じでやってる.
なので基本的には,すり抜けはおきない.はず.(バグってなければ)
7673
2013/01/16(水) 00:22:16.17ID:FvBTwx9m ああ,1フレーム前と現在のフレームの位置情報を各々保持してて,
その間はそれぞれ等速直線運動をしている,という前提でね.
その間はそれぞれ等速直線運動をしている,という前提でね.
7771
2013/01/16(水) 02:47:44.41ID:+L+Om9AH 作ってるのはマップチップを敷き詰めたスクロール無しの平面でのアクションゲーです
移動は上下左右斜めも可能でピクセル単位です
また一つ質問なんですが、プレイヤーの当たり判定をするポイントってどこにするべきなのでしょうか
自分はプレイヤーの中央に判定点を取っているのですがいつもグチャグチャになります
当たり判定を円のような面積?で取る方法はやったことがないです。2Dでも使えますか?
点ではなくて面積で当たり判定を取る方法・・・
ブロックのサイズから面積を計算して、プレイヤーと重なった面積が○○以上になれば当たったことにする みたいなことですか?
移動は上下左右斜めも可能でピクセル単位です
また一つ質問なんですが、プレイヤーの当たり判定をするポイントってどこにするべきなのでしょうか
自分はプレイヤーの中央に判定点を取っているのですがいつもグチャグチャになります
当たり判定を円のような面積?で取る方法はやったことがないです。2Dでも使えますか?
点ではなくて面積で当たり判定を取る方法・・・
ブロックのサイズから面積を計算して、プレイヤーと重なった面積が○○以上になれば当たったことにする みたいなことですか?
2013/01/16(水) 10:43:20.41ID:U+SCJlI3
普通、2Dだと四角か円で判定とるだろ。
人の形をしたものにはキャラグラの80%ぐらいの大きさにあたる
四角形で判定とればいいし、巨大なヘビとか曲がるレーザーなら
小さい四角の判定を鎖のように繋げて判定にすればいい。
人の形をしたものにはキャラグラの80%ぐらいの大きさにあたる
四角形で判定とればいいし、巨大なヘビとか曲がるレーザーなら
小さい四角の判定を鎖のように繋げて判定にすればいい。
2013/01/16(水) 12:12:30.09ID:vH/BKNi/
ヒット判定のすりぬけ問題は前もって交点検出しないとだめよ。
80名前は開発中のものです。
2013/01/17(木) 17:15:05.18ID:+cKRqKg22013/01/17(木) 18:33:38.80ID:gBLtOCQt
スクリーンショットとか上げてよ
2013/01/17(木) 22:57:41.07ID:3HVRASXD
>>80
ブロックは奇数行・列に配置させてるので単純に、if(マス目%2 != 0)みたいな感じでやってます。
自分がやってる方法はいつもこんな感じです。
public int x, y; // プレイヤーの左上の点
private static final int S = 32; // プレイヤーの縦と横のサイズ
/**
* 判定点を返す。
* @return プレイヤーの判定点の座標
*/
private Point getPoint() {
return new Point(x+S/2, y+S/2);
}
移動の際int directionに方角を代入しているので後は
・動けるか否かのbooleanを返すメソッド if(direction==RIGHT && (getPoint.y)/S%2 != 0) (右へ移動するとき、奇数行であれば動けないの意味でfalseを返すみたいな。)
・修正が必要な領域に入ったか否かのbooleanを返すメソッド
・修正するメソッド
みたいな感じに細かく定義していってます。
ただ、if(マス目%2 != 0)のように定義しちゃうと、
プレイヤー:□、 ブロック:■とする
□
↓
■ ■
のように、少し左によった状態だけど判定的にはokなとき
■□ ■
のようになって、ここで右側にいけない(右の壁まで数ピクセル進めない)のって気持ち悪いと思うのです
こういう時だけ場合分けするにしても煩雑になってきますし、そもそもの当たり判定の方法がよくないのかなと思いまして質問しました。
ブロックは奇数行・列に配置させてるので単純に、if(マス目%2 != 0)みたいな感じでやってます。
自分がやってる方法はいつもこんな感じです。
public int x, y; // プレイヤーの左上の点
private static final int S = 32; // プレイヤーの縦と横のサイズ
/**
* 判定点を返す。
* @return プレイヤーの判定点の座標
*/
private Point getPoint() {
return new Point(x+S/2, y+S/2);
}
移動の際int directionに方角を代入しているので後は
・動けるか否かのbooleanを返すメソッド if(direction==RIGHT && (getPoint.y)/S%2 != 0) (右へ移動するとき、奇数行であれば動けないの意味でfalseを返すみたいな。)
・修正が必要な領域に入ったか否かのbooleanを返すメソッド
・修正するメソッド
みたいな感じに細かく定義していってます。
ただ、if(マス目%2 != 0)のように定義しちゃうと、
プレイヤー:□、 ブロック:■とする
□
↓
■ ■
のように、少し左によった状態だけど判定的にはokなとき
■□ ■
のようになって、ここで右側にいけない(右の壁まで数ピクセル進めない)のって気持ち悪いと思うのです
こういう時だけ場合分けするにしても煩雑になってきますし、そもそもの当たり判定の方法がよくないのかなと思いまして質問しました。
2013/01/18(金) 00:06:12.20ID:cE8dsg28
>>82
仕様に合わせた最適な判定は知らんが(仕様が分からないし)
普通は中心じゃなく四隅を判定する
右移動中なら右上、右下だけとかの省略はできるが
で、四隅をプレイヤーサイズじゃなく判定サイズにする
ブロックがこんな感じに敷き詰められてると思っての回答になるが
■ ■ ■
■ ■ ■
■ ■ ■
奇数行だから横に動けないとするんじゃなく
奇数行で右に移動中なら右側の判定x座標も奇数目になったら
めりこんだ座標分戻すってやる
斜め移動ならブロックのどの面に先に当たったかも必要になる
仕様に合わせた最適な判定は知らんが(仕様が分からないし)
普通は中心じゃなく四隅を判定する
右移動中なら右上、右下だけとかの省略はできるが
で、四隅をプレイヤーサイズじゃなく判定サイズにする
ブロックがこんな感じに敷き詰められてると思っての回答になるが
■ ■ ■
■ ■ ■
■ ■ ■
奇数行だから横に動けないとするんじゃなく
奇数行で右に移動中なら右側の判定x座標も奇数目になったら
めりこんだ座標分戻すってやる
斜め移動ならブロックのどの面に先に当たったかも必要になる
2013/01/18(金) 02:20:15.70ID:YeFFrDV3
お〜こんなスレあったのか
ちょっと前にTDぽいの作ったなぁ
ちょっと前にTDぽいの作ったなぁ
2013/01/18(金) 23:19:47.41ID:OrI6e3yP
2013/01/18(金) 23:22:12.80ID:OrI6e3yP
訂正:intersectsね
2013/01/18(金) 23:46:53.86ID:cE8dsg28
Javaは知らないからそう言う便利なのがあれば使えば良いけど
やってる事自体は変らないでしょ
升目と矩形の判定を中心一点だけではやらない
やってる事自体は変らないでしょ
升目と矩形の判定を中心一点だけではやらない
2013/01/18(金) 23:52:51.60ID:/+2FrF0Y
2013/01/18(金) 23:57:49.81ID:/+2FrF0Y
ゲーム(マリオ)だと踏んだとか横から当たったとか
ゲーム独自の判別する必要があるし、
既存クラスライブラリに全部やってもらおうというのは無理だよ。
ゲーム独自の判別する必要があるし、
既存クラスライブラリに全部やってもらおうというのは無理だよ。
2013/01/19(土) 00:50:01.89ID:yYWDydAV
>既存クラスライブラリに全部やってもらおうというのは無理だよ。
んなことわかりきってる。だが可能な限りjreに依存するべきだと思うよ。
>むしろ四隅を判定しないやり方ってありえないだろ。
全然ありえなくない。逆になぜ四隅を判定する必要があるか書いてごらんよ
んなことわかりきってる。だが可能な限りjreに依存するべきだと思うよ。
>むしろ四隅を判定しないやり方ってありえないだろ。
全然ありえなくない。逆になぜ四隅を判定する必要があるか書いてごらんよ
2013/01/19(土) 01:39:37.12ID:yYWDydAV
ちなみに、中心一点というかそれを基準にするのは悪くないと思う
なにより二次元における閉じた図形であれば必ず重心が一点のみ存在する訳で、これほど保守性の高い性質はない。
あと、
if(playerRectangle.intersects(blockRectangle) {
Rectangle intersection = (Rectangle) playerRectangle.createIntersection(blockRectangle);
...
...
}
で重なった矩形が取れるなんつーくっそ便利なモノ使わないと損だと思うよ。
四隅にこだわってる理由がよくわからんし、一応ここJavaスレだで。
なにより二次元における閉じた図形であれば必ず重心が一点のみ存在する訳で、これほど保守性の高い性質はない。
あと、
if(playerRectangle.intersects(blockRectangle) {
Rectangle intersection = (Rectangle) playerRectangle.createIntersection(blockRectangle);
...
...
}
で重なった矩形が取れるなんつーくっそ便利なモノ使わないと損だと思うよ。
四隅にこだわってる理由がよくわからんし、一応ここJavaスレだで。
2013/01/19(土) 01:42:43.12ID:fS2RAsj1
>可能な限りjreに依存するべきだと思うよ。
的外れ。
>なぜ四隅を判定する必要があるか書いてごらんよ
Rectangleを使うと四隅を判定しないのか?
>>82-83の話をしてるから、そこんとこ踏まえてね。
的外れ。
>なぜ四隅を判定する必要があるか書いてごらんよ
Rectangleを使うと四隅を判定しないのか?
>>82-83の話をしてるから、そこんとこ踏まえてね。
2013/01/19(土) 01:58:37.40ID:yYWDydAV
2013/01/19(土) 02:03:27.73ID:fS2RAsj1
>>93
プレイヤーとブロックの四隅を判定しているように見えるけど、何か違うのかな?
プレイヤーとブロックの四隅を判定しているように見えるけど、何か違うのかな?
2013/01/19(土) 02:17:39.53ID:fS2RAsj1
>>83(俺じゃないけど)は設計の話をしているわけで、
実装において物理エンジンでもRectangleでも
より原始的な方法(int x,y,w,h)でも好きにすればいい話。
1から10まで書かないとわからないようだな。
実装において物理エンジンでもRectangleでも
より原始的な方法(int x,y,w,h)でも好きにすればいい話。
1から10まで書かないとわからないようだな。
2013/01/19(土) 02:20:19.61ID:yYWDydAV
A⊂Bの意味で言ってるのね。
ならなおさらBのRect使えよと言いたいが、設計の段階の話なら
>より原始的な方法(int x,y,w,h)でも好きにすればいい話。
で納得。
ならなおさらBのRect使えよと言いたいが、設計の段階の話なら
>より原始的な方法(int x,y,w,h)でも好きにすればいい話。
で納得。
2013/01/19(土) 12:23:53.82ID:DHDneNpc
単純にこんな感じでいいんじゃないの?試してないけど
マップチップを敷き詰めた状態でブロックがいちいち矩形座標持ってるとも思えないし
あと上下左右4方向の移動・当たり判定が理解できるまでななめ移動は考えない方がいい
int CHARA_X, CHARA_Y; // キャラピクセル座標
int CHARA_SIZE; // キャラサイズ(XY同サイズとして)
int CHARA_MOVE; // キャラ移動量(CHARA_SIZE < CHARA_MOVEだとすり抜ける)
int CHIP_SIZE; // マップチップサイズ(XY同サイズとして)
int MAP[][]; // マップ(0:移動可 1:移動不可)
private void moveChara() {
if (direction == RIGHT) {
CHARA_X += CHARA_MOVE;
while (MAP[CHARA_Y / CHIP_SIZE][(CHARA_X + CHARA_SIZE) / CHIP_SIZE] == 1) {
CHARA_X--;
}
}
}
マップチップを敷き詰めた状態でブロックがいちいち矩形座標持ってるとも思えないし
あと上下左右4方向の移動・当たり判定が理解できるまでななめ移動は考えない方がいい
int CHARA_X, CHARA_Y; // キャラピクセル座標
int CHARA_SIZE; // キャラサイズ(XY同サイズとして)
int CHARA_MOVE; // キャラ移動量(CHARA_SIZE < CHARA_MOVEだとすり抜ける)
int CHIP_SIZE; // マップチップサイズ(XY同サイズとして)
int MAP[][]; // マップ(0:移動可 1:移動不可)
private void moveChara() {
if (direction == RIGHT) {
CHARA_X += CHARA_MOVE;
while (MAP[CHARA_Y / CHIP_SIZE][(CHARA_X + CHARA_SIZE) / CHIP_SIZE] == 1) {
CHARA_X--;
}
}
}
2013/01/19(土) 15:59:40.56ID:fS2RAsj1
ブロックの大きさも一律固定だろうしな。
単純なアプリなら単純に作ったほうが工数が少なくて楽。
保守性がどうとか初心者が背伸びして粋がってるとしか思えん。
単純なアプリなら単純に作ったほうが工数が少なくて楽。
保守性がどうとか初心者が背伸びして粋がってるとしか思えん。
2013/01/19(土) 16:59:27.07ID:yYWDydAV
別に俺が言ってる方法は複雑じゃないと思うんだけどな〜。(ソース量の面やAPI的にも)
「基本図形を描画するメソッドは使うな!」的な流れも確かにあったが、今は利用できるものは利用したほうが便利でシンプルに書けることに気づいてるじゃん。
Java2D使うのは初心者には無理だと思ってるならそれはバカにしすぎだと思う。
http://www.youtube.com/watch?v=Otl24e_nuyc
例えばこういうチュートリアルみてもビギナー向けの解説としてるけど?
「基本図形を描画するメソッドは使うな!」的な流れも確かにあったが、今は利用できるものは利用したほうが便利でシンプルに書けることに気づいてるじゃん。
Java2D使うのは初心者には無理だと思ってるならそれはバカにしすぎだと思う。
http://www.youtube.com/watch?v=Otl24e_nuyc
例えばこういうチュートリアルみてもビギナー向けの解説としてるけど?
100名前は開発中のものです。
2013/01/19(土) 17:03:50.09ID:yYWDydAV awt使うのは・・・に訂正。
101名前は開発中のものです。
2013/01/19(土) 18:25:25.58ID:w/KP0xlb なんか感じの悪いスレだな
10297
2013/01/19(土) 20:16:33.84ID:DHDneNpc >>97
風呂入ってコード思い浮かべたらいきなりバグあったわ。気晴らしは大事だね
while (MAP[CHARA_Y / CHIP_SIZE][(CHARA_X + CHARA_SIZE) / CHIP_SIZE] == 1) {
これだけだと右上しかチェックしてないわ。下記が修正パッチね
while (MAP[ CHARA_Y / CHIP_SIZE][(CHARA_X + CHARA_SIZE) / CHIP_SIZE] == 1) ||
MAP[(CHARA_Y + CHARA_SIZE) / CHIP_SIZE][(CHARA_X + CHARA_SIZE) / CHIP_SIZE] == 1) {
>>99
キャラクタ同士の当たり判定ならわかるけどブロックとの判定でもそうなの?
俺は勝手にボンバーマンをイメージしたけど、本当に1つ1つのブロックもRect座標を持つべきなの?
風呂入ってコード思い浮かべたらいきなりバグあったわ。気晴らしは大事だね
while (MAP[CHARA_Y / CHIP_SIZE][(CHARA_X + CHARA_SIZE) / CHIP_SIZE] == 1) {
これだけだと右上しかチェックしてないわ。下記が修正パッチね
while (MAP[ CHARA_Y / CHIP_SIZE][(CHARA_X + CHARA_SIZE) / CHIP_SIZE] == 1) ||
MAP[(CHARA_Y + CHARA_SIZE) / CHIP_SIZE][(CHARA_X + CHARA_SIZE) / CHIP_SIZE] == 1) {
>>99
キャラクタ同士の当たり判定ならわかるけどブロックとの判定でもそうなの?
俺は勝手にボンバーマンをイメージしたけど、本当に1つ1つのブロックもRect座標を持つべきなの?
103名前は開発中のものです。
2013/01/19(土) 21:38:54.76ID:fS2RAsj1 >本当に1つ1つのブロックもRect座標を持つべきなの?
ボンバーマンなら特殊形状のマップでも
1ブロックの組み合わせに過ぎないから必要ないね。
ゲームがブロック崩しで、各ブロックの大きさや形(長方形・正方形)が
異なるなら、Rectangleが望ましい可能性が高い。
ボンバーマンなら特殊形状のマップでも
1ブロックの組み合わせに過ぎないから必要ないね。
ゲームがブロック崩しで、各ブロックの大きさや形(長方形・正方形)が
異なるなら、Rectangleが望ましい可能性が高い。
104名前は開発中のものです。
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; //これで動く
}
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 【速報】トランプ大統領、中国の習近平国家主席を「国賓」として招待することに ★3 [ニョキニョキ★]
- 【速報】トランプ大統領、中国の習近平国家主席を「国賓」として招待することに ★4 [ニョキニョキ★]
- 日本と中国を結ぶ12航空路線で全便欠航 中国人に最も人気の海外旅行先は日本から韓国に ★2 [ぐれ★]
- 【東京・足立の車暴走】赤信号無視か 危険運転致死傷疑いも視野に捜査 逮捕された職業不詳の男性(37)は精神疾患で通院歴も ★3 [ぐれ★]
- 【テレビ】鈴木福&あのちゃんW主演 テレ東で押見修造氏の漫画『惡の華』実写ドラマ化決定! 累計325万部を突破した伝説的漫画 [冬月記者★]
- 防衛費増額「賛成」62・8% 「反対」32・2%を大きく上回る 賛成「18~29歳で8割」世代差あらわ 産経FNN合同世論調査 ★3 [尺アジ★]
- 【実況】博衣こよりのえちえち朝こよ🧪★2
- 【実況】博衣こよりのえちえち朝こよ🧪
- 【悲報】小野田紀美さん、宇宙人みたいな服を着てしまう…また、そのことを突っ込まれブチ切れ中www [856698234]
- 【悲報】セブンイレブンの納豆巻きの値段、限界突破wwwwwwwwwwwwwwwwww [977261419]
- 🏡
- お前らっていつもここにいるよな
