ゲームのアルゴリズムを教えて管sai (199レス)
上下前次1-新
63(1): 名前は開発中のものです。 [sage] 2005/06/15(水) 16:55:21 ID:J79aeXl5(4/4) AAS
 ●メインキャラクターとマップとの当たり判定は、 
 □x座標の移動処理の直後に 
   //左上と左下 
   if(Map[x/32][y/32]!=0 || Map[x/32,(y+height)/32]!=0) 
   { 
    x=(x/32+1)*32; 
   } 
   //右上と右下 
   if(Map[(x+width)/32,y/32]!=0 || Map[(x+width)/32,(y+height)/32]!=0) 
   { 
    x=(x/32)*32; 
   } 
 で 
 □y座標の移動処理の直後に 
   //左上と右上 
   If(Map[x/32,y/32]!=0 || Map[(x+31)/32,y/32]!=0) 
   { 
    y=(y/32+1)*32; 
   } 
   //左下と右下 
   If(Map[x/32,(y+31)/32]!=0 || Map[(x+31)/32,(y+31)/32)!=0 
   { 
    y=(y/32)*32; 
   } 
  
 とやればできます。どうしてそうなるのかは、 
 計算式を参考に図を書いてみれば分かると思います。 
64(2): 名前は開発中のものです。 [sage] 2005/06/16(木) 05:05:48 ID:3Ela4Sa6(1) AAS
 俺も昔Javascriptで同じようなの作ったことあります。 
 肝心のゲームは流行らなかったけど。IE対応型RPGゲームね。 
  
 閑話休題、質問です。 
 SLGの六角型HEX画面ってどうやってるの? 
 テーブルで組んでいくと非効率的だし、実際のアルゴリズムも 
 かなり無駄な処理が入ってるのでしょうか? 
65(2): 名前は開発中のものです。 [sage] 2005/06/16(木) 11:32:14 ID:jcj8vG3U(1) AAS
 >>64 リストで組んでみては?
66(1): 名前は開発中のものです。 [sage] 2005/06/17(金) 22:36:37 ID:L6bXNRcs(1) AAS
 >>64 
 普通の2次元配列を用意すると、任意の要素の周辺には8個の要素があるが、 
 そのうち2個削れば6個になる。 
 横並びのHEXの場合、削り方には 
 ・右上と右下 
 ・左上と左下 
 の2通りあるが、行の隅・奇で決めればよい。 
  
 但し、このアドレス計算のオーバーヘッドが無視できない場合、 
 >>65の言うようにリスト構造か、[6方位][各セル]分の配列を 
 あらかじめ作ってしまう方法も検討するとよい。
67: 名前は開発中のものです。 [sage] 2005/06/18(土) 22:38:32 ID:FcEi37Wc(1) AAS
 >65-66 
 ? 
  
 話が前後するけど移動に関しては↓の「2.マップ移動システム」みたいな 
 話もある。構造が明快ではなくなるけどXY式より処理は少なくなる。 
 外部リンク[html]:members.jcom.home.ne.jp 
  
 横軸分引けば下移動、足せば上移動だから、アクションでも使えるん 
 じゃないかな? 
68: 名前は開発中のものです。 [] 2005/12/22(木) 22:39:36 ID:W7fzD8KK(1) AAS
 >>60-63が参考になった。 
69(1): 名前は開発中のものです。 [] 2005/12/24(土) 08:14:37 ID:mHMu6n/Z(1) AAS
 斜めになっている地面、斜めになっている天井とプレイヤーとの当り判定ってどーゆーふうにしたらいいんですかね? 
 地面は何とかなりそうなんですが天井の方がよくわかりません。 
70: 名前は開発中のものです。 [sage] 2007/01/27(土) 00:39:30 ID:MBdcNsZ6(1) AAS
 ほ 
71: 名前は開発中のものです。 [age] 2007/02/16(金) 14:29:39 ID:SVucWmYy(1) AAS
 age 
72: 名前は開発中のものです。 [] 2007/02/18(日) 16:29:45 ID:Y8Ki4rPj(1) AAS
 某板よりコピペ 
 多数のオブジェクトの衝突判定を並列化する方法 
移動後の座標をボクセルに振り分ける。 
 1つのボクセル内に存在するキャラを総当たりで衝突判定。  
  
 処理の順序としては、移動、振り分け、衝突判定、衝突処理。 
 これで処理を並列化できる。 
  
 もう少し詳しく言えば、衝突判定をしやすくするために、 
 ボクセルに振り分ける時点で座標値などをボクセルごとの一時バッファに複製しておく。 
 これにより巨大なバッファをLSにロードする必要がなくなる。  
  
 衝突の連鎖については次フレームに回す。それで結果的には再帰処理になる。  
  
 普通は移動後に振り分けるというより 
 ボクセル内のオブジェクトを管理するバッファを常設しておいて 
 移動でボクセル外に出たときだけバッファの更新をするでしょ。
73: 名前は開発中のものです。 [sage] 2007/02/24(土) 16:15:49 ID:LTRE8EdM(1) AAS
 >>69 
 ・坂を方程式で表す方法 
  例えば天井がy=-0.1*x+64の直線と考えれば、 
  atamay<=-0.1*atamax+64なら当たり。 
  地面をy=-0.1*x+480の直線と考えれば、 
  asiy>=-0.1*asix+480なら当たり。 
  atamax,atamayはキャラの頭の座標。asix,asiyはキャラの足の座標。 
  画面は640*480を想定。 
 ・小さい矩形に分ける方法 
  天井も地面も小さい矩形がたくさん集まったものだと考え、それぞれの矩形と 
  の当たり判定を行う。壁(当たり判定がある地形)があるシューティングとかは 
  これでやってるはず。 
  これなら坂はまっすぐでなくてもかまわない。 
 ・色で判定する方法 
  たとえば壁(当たり判定がある地形)は黄色で描くものと決める。atamax,atamay 
  の座標の色を読み黄色なら当たり。RGBのRが128以上なら壁とかでもいい 
  (言語による)。描画処理と当たり判定の順序に気をつける必要がある。地形 
  を描いて、キャラを描く前に当たり判定を行う。あるいは地形だけ仮想画面に 
  描くか。 
 ・矩形との当たり判定 
  天井をたとえば10度傾いた矩形と考える。この矩形をAとする。Aの中心点 
  を中心として−10度回転させた矩形をBとする。同じように点(atamax,atamay) 
  を回転させた架空の点の座標を(kakuux,kakuuy)とする。 
  あとは普通に傾いてない矩形の当たり判定(Bと(kakuux,kakuuy)の当たり判定) 
  を行うだけ。足と地面も同様。サイン、コサイン、アークタンジェントが分かれば 
  できる。 
74: 名前は開発中のものです。 [] 2007/04/05(木) 02:54:03 ID:UIV+9920(1) AAS
 AGE 
75(1): 名前は開発中のものです。 [sage] 2007/04/05(木) 03:08:36 ID:tWT0PUr7(1) AAS
 ビリヤードの玉のように、円形のオブジェクトが 
 同じ円形のオブジェクトに当たって弾き飛ばすような 
 移動の仕方って、どうすればいいんでしょうか? 
76: 名前は開発中のものです。 [] 2007/08/27(月) 20:25:07 ID:bCl/miWp(1) AAS
 動画リンク[ニコニコ動画]
 
 
77: 名前は開発中のものです。 [sage] 2007/08/28(火) 00:03:05 ID:8moxEFVA(1) AAS
 >>75 
 衝突距離が出しやすいから矩形よりも簡単だったりする。 
 接線での水平成分、垂直成分それぞれの速度の変換を行う。高校数学(三角関数)と物理なんだが。 
 食い込んだ分の補正をするとなお良し。 
78: 名前は開発中のものです。 [sage] 2007/08/28(火) 01:13:44 ID:oeJOJ4t+(1) AAS
 死後4ヶ月以上経過した75の白骨死体を発見 
79(3): 名前は開発中のものです。 [] 2007/09/07(金) 13:37:40 ID:5sK/fkD5(1) AAS
 角度を付けた移動ってどうやるんですか?45度だったら 
 x=x+45 
 y=y+45 
 でいいんですか? 
80: 名前は開発中のものです。 [] 2007/09/07(金) 13:39:49 ID:H8DGQcSX(1) AAS
 >>79 
 なんじゃいそりゃ 
81: 名前は開発中のものです。 [sage] 2007/09/07(金) 14:08:12 ID:ODKwq4Ib(1) AAS
 高校の(今は中学か?)教科書嫁 
  
 というのはなんなのでヒントだけ 
  
 x = x + v * cos(angle) 
 y = y + v * sin(angle) 
82: 名前は開発中のものです。 [] 2007/09/07(金) 14:22:42 ID:puv664XK(1) AAS
 >>79 
  
 これは酷いww 
 ワラタ 
  
 釣りだろ 
83: 名前は開発中のものです。 [] 2007/09/07(金) 23:45:15 ID:ZuhXBmED(1) AAS
 せめて足すんぢゃなくてXょうゃ… 
 75は角度なんでそのまま使ったらヤバいょうな気がする; 
 角度たら360°ダロ? 
 75÷360ぽくね!? 
 少数点だし…ナンカ上手く曲がりソウぢゃん!? 
  
 こんな感じでゲームを創ってたアノ頃……… 
 (涙)
84: 名前は開発中のものです。 [sage] 2007/09/08(土) 13:11:56 ID:ZvPWIcCC(1) AAS
 まぁいろいろトライするのが思い出になるんだよな。 
85: 名前は開発中のものです。 [sage] 2007/09/08(土) 13:34:41 ID:x0k7gG8Z(1) AAS
 Deg と Rad を知らなかったあの頃 
86: 名前は開発中のものです。 [sage] 2007/09/12(水) 20:10:03 ID:u002ijju(1) AAS
 >>79 
 #define RAD 3.14159/180 
 って定義しておいて、 
  
 x+=cos(45*RAD)*speed; 
 y-=sin(45*RAD)*speed; 
  
 でいけると思うよ。
87: 名前は開発中のものです。 [] 2007/11/18(日) 11:26:33 ID:kpbdlgGK(1) AAS
 質問させて下さい。  
 ユーザーに手書きで図形を書かせ、  
 それが丸なのか四角形なのか三角形なのかを判別したいのですが  
 どのようなアルゴリズムが考えられますでしょうか?  
上下前次1-新書関写板覧索設栞歴
あと 112 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.021s