約 1,241,001 件
https://w.atwiki.jp/stgbuilder/pages/259.html
<キャラクタ同士の当たり判定> 当たり判定の設定 ①キャラクタの設定:必須 キャラクタの種類:衝突するキャラクタの種類に応じて、攻撃側と防御側が決定される 体力、攻撃力、防御力:防御側の体力から、攻撃側の攻撃力-防御側の防御力がダメージとして減算される 攻撃判定、防御判定、無敵:攻撃側の攻撃判定を有効、防御側の防御判定を有効かつ無敵を無効にする ②スクリプトの設定:必要であれば、キャラクタに登録が必要 攻撃時タスク:攻撃側の当たり判定時にタスクが起動する 防御時タスク:防御側の当たり判定時で体力>0ならばタスクが起動する 破壊時タスク:防御側の当たり判定時で体力≦0ならばタスクが起動する ③自機の設定:自機であれば、設定が必要 プレイヤー編集の本体設定で自機キャラクタの登録 ゲーム設定でのプレイヤー登録で自機の登録、残機数の設定、コンティニュー回数の設定 当たり判定 キャラクタのカスタム編集
https://w.atwiki.jp/rgss2study/pages/30.html
入門編・13 シューティングゲームもどきを作る このページは未完成です。 当たり判定をつける さて、今回の当たり判定をもって、一応シューティングゲームとしての最低限の部分は完成です。 しかし、やることはなかなか多いです。 自機と敵の位置から、接触しているかを判定する 接触している時、自機を死亡状態にする 自機が死亡状態の時、自機を非表示にする こんなところでしょうか。今回初めてやる要素がいくつも入っています。 接触しているかを判定する 前へ・次へ? すごくわかりやすいです!! わかりやすい講座を探していたのでありがたいです。 続き楽しみにしています! -- (名無しさん) 2009-04-11 17 41 26 コメントありがとうございます。 こんなに早く反応があるとは……。 ヘルプの解説を含め、シーンの構造などを説明しているものが ほとんどなかったのが不満で、作ってみました。 本当に実はあんまり分かっていないので、至らないところも 多いかと思いますが、よろしくお願いします。 -- (管理人) 2009-04-11 18 58 22 すいません、『自機を表示する』の記述に誤りがありました。 updateの中身を書かないと、自機の位置が正しく反映されません。 記事を修正しておきます。 -- (管理人) 2009-04-14 21 59 20 ツクール古参ですがRGSSに四苦八苦でした(^^;) が、シーンの基本構造を解説した記事にガチで救われました 応援してるんで、がんばってください!!続き楽しみです。 -- (うきぶくろ) 2009-04-27 12 17 15 コメントありがとうございます。 一番書きたかったそのあたりは書いたもののなんだか忙しい+ 自分でもRGSSの解読に手間取っているためになかなか更新できていません。 どの程度まで書けるか分かりませんがよろしくお願いします。 -- (管理人) 2009-04-28 08 40 35 敵キャラを作成する・2の最後の方に、 updateの際に敵キャラを扱うスプライトの更新を行うのを忘れていたのを修正しました。 イタリック体で修正が入っている部分です。 -- (管理人) 2009-05-02 22 10 23 UFOが見にくかったので画像に縁取りをつけました。 -- (管理人) 2009-05-04 08 56 56 ホントにスゴイと思います。尊敬します。 大変だと思いますが少しずつでいいんで頑張ってください。 -- (ユウ) 2009-05-12 00 07 40 コメントありがとうございます。 恐らくこれを見て作る側はすぐなんでたいそうもどかしいと思いますが……。 ところで、今のところはちゃんとこの講座の通りで動くようになっているのでしょうか? 一応チェックはしてますが、多少ポカはすると思ってたので指摘が無いのがむしろ意外です。 -- (管理人) 2009-05-13 21 11 52 大丈夫です。ちゃんと動いています。 頑張ってください。続きが楽しみです。 -- (ユウ) 2009-05-18 01 06 59 1段目と言われている部分は『RGSS2』 2段目と言われている部分は『プリセットのスクリプト』 と言われると、より解り易い表現なのでは? -- (通行人) 2009-11-05 12 48 40 @enemies[i] = Game_Enemy.new(200 + rand(312), rand(384)) ↑argumentErrorが発生しました。wrong number of arguments(2 for 0) どうすればいいでしょうか、頼みます。 -- (help me!!) 2010-01-05 00 22 50 マウス入力はできますぜ。 Win32とかなんやらをつかって。 キーボードもできるみたいですが見つかりません。 探してます。 -- (シャミラ) 2010-03-24 05 28 28 勉強させてもらってます、とても参考になります。 入門編・10 にあるGame_Ememiesのクラスの attr_accessor ;s_enemies ですが、;を に変えないとエラーを吐きますので コピペでやった人は修正した方がよさそうです -- (邯鄲) 2010-09-04 17 27 18 @enemies[i] = Game_Enemy.new(200 + rand(312), rand(384)) ↑argumentErrorが発生しました。wrong number of arguments(2 for 0) Game_Enemyクラスって最初からありますよね。 それが原因では? -- (ぽん) 2010-10-03 23 11 42 製作初心者なのでとても助かります!! -- (ありがとうございます!) 2011-02-05 12 44 03 セーブ/ロードまわりはMarshalを使ってスクリプトで記述されていますし、 ファイルの読み書きもRubyと同様にできますから、 セーブやロードをいじるのはスクリプト操作でできることでは? -- (ななし) 2011-05-20 13 04 19 ダンジョンなら3D化できると、下記サイトに書いてありました。 -- (だれかさん) 2011-08-18 07 26 19 アルバイトはじめましたd(´∀`*)グッ♪ http //64n.co/ -- (私だ) 2012-01-09 04 49 41 風俗店を探よりココ!!男性は報酬あり!d(´∀`*)→ http //www.44m4.net/ -- (江梨子) 2012-08-20 17 11 02 名前 コメント すべてのコメントを見る
https://w.atwiki.jp/stgbuilder/pages/256.html
<背景とキャラクタの当たり判定> SB 0.99.03以前 背景とキャラクタとの当たり判定を有効にするには、 ①背景編集で「背景との当たり判定」を設定。 ②ステージ編集で「背景の当たり判定を有効」に設定。 ③キャラクタ編集で「背景と判定あり」に設定。 背景編集 背景との当たり判定: バンク0-7の右端にあるHITをクリックすると背景へ当たり判定の属性を付けるモードとなり、左側のイメージに当たり判定用のリストが表示。 設定したい当たり判定を選択後、通常のモードと同じように右側のマップへと配置。 (背景パーツが無い部分に当たり判定を配置することはできない。) ステージ編集 (表示優先設定) 背景の当たり判定を有効:on 攻撃力:1以上を設定 背景との接触時に受けるダメージを設定。防御力は無視される。背景との接触時にも防御ヒット時タスクが起動される。 キャラクタ編集 (属性フラグ) 背景と判定あり:on v0.99以降 背景と接触しても即死しなくなり、背景と接触した場合にダメージ1を受け、HPが0なら破壊、HPが0以外では防御ヒットが発生(防御力は無視) v0.99.01以降 ステージ編集で、背景の攻撃力を設定可能 v0.99.04以降 背景との当たり判定の方式を変更 キャラクタ編集で、従来のチェックボックスが廃止され、コンボボックスでの選択へ変更 ダメージ:これまで同様、背景との接触で、背景の攻撃力分のダメージを受ける 通過不能:背景との接触で跳ね返される(壁ヒット時タスク14を起動) 背景編集 ステージ編集>>表示優先設定 タブ キャラクタ編集>>メイン タブ スクリプト編集>>背景パネル>>制御(背景) →背景とキャラクタの当たり判定2
https://w.atwiki.jp/1524/pages/73.html
レイ当たり判定用メッシュ
https://w.atwiki.jp/yaruhara/pages/59.html
矩形マップとの当たり判定 これは? 矩形状に区切られたマップ (こんなの) との衝突・応答判定を行う方法の解説です。 (例えば、水色は海なのでその場所に移動できないようにする。など) 矩形マップ 矩形マップは、縦軸・横軸からなる2次元の表です。 なので、たいてい矩形マップを読み込むと、2次元の配列になり、 /** * 座標を指定してマップデータを取得する * @param x, y 座標 * @return マップデータ */ int getMapData(int x, int y) { return map_data[x][y]; } というように「座標」をキーに、マップデータを取得することになります。 (※データテーブルのサイズを節約するために、ハッシュテーブルを使用する方法もあります) 衝突判定 衝突判定は矩形同士の当たり判定をやったことがある人なら簡単です。 問題は衝突応答の判定になります。 衝突応答の判定 衝突判定は、移動後の座標が通過できない地形であった場合に、 「衝突した!」という判定を返すだけです。 衝突応答は、さらに「通過できる地形まで戻してやる」という処理をする必要があります。 これを実装するには、縦軸横軸を分けて考える方がシンプルに実装できます。 というのは、縦軸の移動量と横軸の移動量を同時に処理しようとすると、 このような問題が発生して、どこに戻してやるかが分からなくなるからです。 これを場合分けで考えると、 どのような地形に対して どのように衝突したか を考慮する必要があります。 そして、 どこに戻るか? を考えると、結構な数の場合分けが必要になります。 この場合分けの手間を考えると、 例えば、(x,y)=(3,6)の移動があった場合、 X方向に3移動してみる 移動後の座標と地形との衝突判定 衝突していた場合、移動量が正であれば、衝突した地形の左に戻す 移動量が負であれば、衝突した地形の右に戻す Y方向に6移動してみる 移動後の座標と地形との衝突判定 衝突していた場合、移動量が正であれば、衝突した地形の上に戻す 移動量が負であれば、衝突した地形の下に戻す というように、移動方向を分けて考えると、 衝突応答の判定がシンプルに行えるようになります。 矩形マップとの判定 さてはて、ここまでは単なる矩形との判定です。 説明が前後してしまっていますが、 矩形マップにおける座標は、チップがある座標であって スクリーン座標ではありません。 例えば、チップサイズが32×32である場合、 スクリーン上での(x,y)=(320,256)は、 矩形マップでは(x,y)=(320/32,256/32)=(10,8)となります。 ここで問題となるのはこんな状態です。 スクリーン上の(x,y)=(350,278)にプレイヤーがいるとします。 この場合のマップ座標は左上に引きずられ(x,y)=(350/32,278/32)=(10,8)になります。 灰色のところが通過できない地形とすると、 この場合、正常な当たり判定ができなくなり、めり込みが発生します。 この問題を回避するには、 移動前の座標を(px,py) 移動量を(dx,dy) 半径(サイズ)を(rx,ry) チップサイズを(chip) とすると、 X方向のみへ移動した座標を求める(px+dx, py)=Pとする 上側地形との当たり判定を考慮するP+(0, -ry)=P_upper マップ座標に変換するP_upper/chip=P_upper_div_chip P_upper_div_chipとマップとの衝突判定を行う。衝突していた場合、移動量が正であれば、衝突した地形の左に戻す 移動量が負であれば、衝突した地形の右に戻す 下側地形との当たり判定を考慮するP+(0, ry)=P_bottom/chip=P_bottom_div_chip P_bottom_div_chipとマップとの衝突判定を行う。衝突していた場合、移動量が正であれば、衝突した地形の左に戻す 移動量が負であれば、衝突した地形の右に戻す Y方向のみへ移動した座標を求める(px, py+dy)=Pとする 左側地形との当たり判定を考慮するP+(-rx, 0)=P_left マップ座標に変換するP_left/chip=P_left_div_chip P_left_div_chipとマップとの衝突判定を行う。衝突していた場合、移動量が正であれば、衝突した地形の上に戻す 移動量が負であれば、衝突した地形の下に戻す 右側地形との当たり判定を考慮するP+(0, ry)=P_right/chip=P_right_div_chip P_right_div_chipとマップとの衝突判定を行う。衝突していた場合、移動量が正であれば、衝突した地形の上に戻す 移動量が負であれば、衝突した地形の下に戻す というように、場合分けを増やしてやることで、いい感じに衝突判定・応答をすることができます。 追記:めり込みを考慮しなくていい場合 ブロック崩しなど、衝突⇒反射という規則がある場合、 めり込みを考慮する必要はなく、移動量を反転させるだけでよいみたいです。 自分を中心に3×3の座標を調べて、衝突していたら移動量を反転する。 「ぐらびてぃっく ぶれいくあうと(OMEGAさん)」から抜粋 repeat BALL_MAX if(ball_type(cnt) == BALL_TYPE_NULL) continue up_cnt = cnt // 3×3のマップ座標を調べる cx = -1 , 0 , 1 , -1 , 0 , 1 , -1 , 0 , 1 cy = -1 , -1 , -1 , 0 , 0 , 0 , 1 , 1 , 1 repeat 9 // ①ボール座標をマップ座標に変換 px = int(ball_x(up_cnt) / BLOCK_WIDTH) + cx(cnt) py = int(ball_y(up_cnt) / BLOCK_HEIGHT) + cy(cnt) if(px 0 | px = BLOCK_WIDTH_CNT | py 0 | py = BLOCK_HEIGHT_CNT) continue if(block_type(px,py) == BLOCK_TYPE_NULL) continue // ②スクリーン座標に戻して判定 if(absf((double(px) + 0.5) * BLOCK_WIDTH - ball_x(up_cnt,0)) (BLOCK_WIDTH + BALL_SIZE) / 2.0 absf((double(py) + 0.5) * BLOCK_HEIGHT - ball_y(up_cnt,0)) (BLOCK_HEIGHT + BALL_SIZE) / 2.0){ if(block_type(px,py) != BLOCK_TYPE_HARD){ repeat 32 addeffect double(px * BLOCK_WIDTH + rnd(BLOCK_WIDTH)), double(py * BLOCK_HEIGHT + rnd(BLOCK_HEIGHT)) , double(rnd(32) - 16) * 0.3 , double(rnd(32) - 16) * 0.3 , EFFECT_TYPE_PERTIC , block_type(px,py) loop block_type(px,py) = BLOCK_TYPE_NULL } // ③移動量を反転 if(absf((double(px) + 0.5) * BLOCK_WIDTH - ball_x(up_cnt,0)) absf((double(py) + 0.5) * BLOCK_HEIGHT - ball_y(up_cnt,0))){ if((double(py) + 0.5) * BLOCK_HEIGHT ball_y(up_cnt,0) ball_vy(up_cnt) 0.0) ball_vy(up_cnt) *= -(BLOCK_REFLECT) if((double(py) + 0.5) * BLOCK_HEIGHT ball_y(up_cnt,0) ball_vy(up_cnt) 0.0) ball_vy(up_cnt) *= -(BLOCK_REFLECT) }else{ if((double(px) + 0.5) * BLOCK_WIDTH ball_x(up_cnt,0) ball_vx(up_cnt) 0.0) ball_vx(up_cnt) *= -(BLOCK_REFLECT) if((double(px) + 0.5) * BLOCK_WIDTH ball_x(up_cnt,0) ball_vx(up_cnt) 0.0) ball_vx(up_cnt) *= -(BLOCK_REFLECT) } } loop loop ①ボール座標をいったんマップ座標に変換して、 ②スクリーン座標で円の判定を行っている というのがポイントです。 (①でボール座標をマップチップの左上に引っ張り、②で中心に補正しているので円の判定でよい)
https://w.atwiki.jp/stgbuilder/pages/349.html
<背景とキャラクタの当たり判定2> SB 0.99.04以降 背景とキャラクタとの当たり判定を有効にするには、 ①背景編集で「背景との当たり判定」を設定。 ②ステージ編集で「背景の当たり判定を有効」に設定。 ③キャラクタ編集で「背景との当たり」を「ダメージ」または「通過不能」に設定。 背景編集 背景との当たり判定: バンク0-7の右端にあるHITをクリックすると背景へ当たり判定の属性を付けるモードとなり、左側のイメージに当たり判定用のリストが表示。 設定したい当たり判定を選択後、通常のモードと同じように右側のマップへと配置。 (背景パーツが無い部分に当たり判定を配置することはできない) ステージ編集 (表示優先設定) 背景の当たり判定を有効:on 攻撃力:1以上を設定 キャラクタの「背景との当たり」が「ダメージ」の際に、背景との接触時に受けるダメージを設定。防御力は無視される。 背景との接触時にも防御ヒット時タスクが起動される。 キャラクタ編集 (メイン) 背景との当たり:「ダメージ」または「通過不能」に設定 ダメージ)キャラクタが背景と接触時に、ダメージ判定を行う。 ステージ編集で設定した攻撃力分のダメージを受け、防御ヒット時タスクが起動される。 通過不能)キャラクタが背景と接触時に、通過不能判定を行う。 壁ヒット時タスクが起動される。(デフォルトスクリプトの壁ヒット時タスクで、キャラクタが押し戻される) SB 0.99.47以降 スクリプト編集 (背景:制御パネル) 当たり判定:「あり」に設定 指定した背景の当たり判定を有効化。 v0.99.04以降 背景との当たり判定の方式を変更 キャラクタ編集で、従来のチェックボックスが廃止され、コンボボックスでの選択へ変更 ダメージ:これまで同様、背景との接触で、背景の攻撃力分のダメージを受ける 通過不能:背景との接触で跳ね返される(壁ヒット時タスク14を起動) v0.99.47以降 スクリプト編集で、背景(制御)パネルが追加され、当たり判定のON/OFFをスクリプトで変更可能 v0.99.48以降 スクリプト編集で、変数(ローカル)パネル内の「壁の中にいるか?」が、背景の当たり判定のON/OFFを参照するように変更 背景編集 ステージ編集>>表示優先設定 タブ キャラクタ編集>>メイン タブ スクリプト編集>>背景パネル>>制御(背景) →背景とキャラクタの当たり判定
https://w.atwiki.jp/nobita-residentevil/pages/76.html
当たり判定を作る 攻撃処理で多用する当たり判定イベントを作っていきます。 以下のように変数に名前を付け、 0005 攻撃判定X 0006 攻撃判定Y 0008 命中ID 0009地形タグ取得 画像のように設定。 + コード クリックで表示 ◆指定位置の情報取得:命中ID, イベントID, ({攻撃判定X},{攻撃判定Y}) ◆指定位置の情報取得:地形タグ取得, 地形タグ, ({攻撃判定X},{攻撃判定Y}) ◆条件分岐:命中ID ≠ 0 ◆条件分岐:地形タグ取得 ≠ 1 ◆条件分岐:スクリプト:~$dataMap.events[$gameVariables.value(8)].note.indexOf("[敵]") ◆スイッチの操作:#0005 攻撃ヒット = ON ◆プラグインコマンド:TE_CALL_MAP_EVENT \V[8] 1 ◆ :分岐終了 ◆ :それ以外のとき ◆スイッチの操作:#0005 攻撃ヒット = ON ◆ :分岐終了 ◆ :分岐終了 ※プラグインコマンドの処理は素材のプラグインを入れ忘れているとエラーが出ます。 座標(攻撃判定X,攻撃判定Y)に存在するマップイベントのIDと地形タグを取得します。 そこでマップイベントが読み取られ、かつ地形タグが1でなく、そのイベントメモ欄に[敵]と書かれていれば攻撃が当たったとみなして、該当イベントの1ページ目の処理を呼び出す仕組みになっています。 以上で当たり判定イベントを作ることができました 銃の攻撃処理を作る 前の項で作成した当たり判定イベントを使ってハンドガンで攻撃する際の処理を作ります。 プレイヤー前方15マスの情報を順次当たり判定イベントで調べていく作りです。 + コード クリックで表示 ◆変数の操作:#0005 攻撃判定X = プレイヤーのマップX ◆変数の操作:#0006 攻撃判定Y = プレイヤーのマップY ◆変数の操作:#0007 判定範囲 = 0 ◆ループ ◆条件分岐:プレイヤーが下を向いている ◆変数の操作:#0006 攻撃判定Y += 1 ◆ :分岐終了 ◆条件分岐:プレイヤーが左を向いている ◆変数の操作:#0005 攻撃判定X -= 1 ◆ :分岐終了 ◆条件分岐:プレイヤーが右を向いている ◆変数の操作:#0005 攻撃判定X += 1 ◆ :分岐終了 ◆条件分岐:プレイヤーが上を向いている ◆変数の操作:#0006 攻撃判定Y -= 1 ◆ :分岐終了 ◆コモンイベント:当たり判定 ◆変数の操作:#0007 判定範囲 += 1 ◆条件分岐:判定範囲 = 15 ◆ループの中断 ◆ :分岐終了 ◆条件分岐:攻撃ヒットがON ◆スイッチの操作:#0005 攻撃ヒット = OFF ◆ループの中断 ◆ :分岐終了 ◆ :以上繰り返し ◆スイッチの操作:#0004 ハンドガン攻撃処理 = OFF 敵オブジェクトを作る 新規マップイベントを作成し、メモ欄に[敵]と書きます。 攻撃が当たった時に呼び出される1ページ目の処理は適当にSEを鳴らすなどしておきましょう。 ここまでで、敵オブジェクトに銃で攻撃して処理が呼び出されSEが鳴れば成功です。 敵HPの概念や敵の攻撃処理は後に作っていきます。
https://w.atwiki.jp/acedi4wiki/pages/41.html
当たり判定はステージの設定で調整することが出来ますが、個別の当たり判定や、複雑な当たり判定を作ることは出来ません。 そこで、当たり判定をソードを使って擬似的に作ります。 どんな時に使うのか? 例えばこんな画像。 これをそのまま使うと当たり判定中心の部分だけになってしまい、デタラメになってしまいます。 そこで、ソードを赤い○の部分で振り続けることで、擬似的に当たり判定を作ります。 大まかな説明 1,対象キャラの体当たりの威力等を0にしておく。 2,データベース→ソードタイプよりソードのサイズと位置を微調整。主に位置のズレを調整します。(右向きなら反転は状況に応じてチェックを外します。) 3,ソードを透明に設定し、常にソードを振り続ける。方法はタイミングを常時、コマンド部分に位置を調整したソードコマンドを挿入するだけ。(ソードを複数使う場合は並列実行にチェックを入れておくと良い) 4,望んだ位置になるように2~3を繰り返して微調整する。 4箇所しか設置していませんが、可視化するとこのようになります。 赤い■がソードです。
https://w.atwiki.jp/ggxxnet2/pages/17.html
5881 名前:名無しさん[sage] 投稿日:2009/07/01(水) 19 51 45 青リロのVE足払いの強さは異常だよなww 5883 名前:名無しさん[sage] 投稿日:2009/07/01(水) 20 58 54 >>5881 あれはモーションに騙されてるんだよな 足払い風なだけで当たり判定はイシャの毒ビンクラス VEが足払いすると毒ビンに変化したらわかりやすいのに 5884 名前:名無しさん[sage] 投稿日:2009/07/01(水) 21 44 04 どこが毒ビンなのかさっぱりわからないんだが 5885 名前:名無しさん[sage] 投稿日:2009/07/01(水) 22 35 01 5884 無敵とか当たり判定を分かりやすく表示してたらいいのにねっていう話さ
https://w.atwiki.jp/ggxxnet00/pages/21.html
5881 名前:名無しさん[sage] 投稿日:2009/07/01(水) 19 51 45 青リロのVE足払いの強さは異常だよなww 5883 名前:名無しさん[sage] 投稿日:2009/07/01(水) 20 58 54 5881 あれはモーションに騙されてるんだよな 足払い風なだけで当たり判定はイシャの毒ビンクラス VEが足払いすると毒ビンに変化したらわかりやすいのに 5884 名前:名無しさん[sage] 投稿日:2009/07/01(水) 21 44 04 どこが毒ビンなのかさっぱりわからないんだが 5885 名前:名無しさん[sage] 投稿日:2009/07/01(水) 22 35 01 5884 無敵とか当たり判定を分かりやすく表示してたらいいのにねっていう話さ