問答収集 カテゴリ:Flashプログラミング
現在のスレッド一覧 / 新規に質問を投稿
1 日付:2010/04/15(木)07:20:20 ID:/aLMGC4upQ
このサイトにも地形座標の説明は載っていますが、
すこしアレンジして動く床を作ってみたいと思っています。(AS1.0)

動くブロック製作の場合、座標が固定ではありません。
HitRectを座標を持つブロックに持たせて
キャラクターのmyRectが当たった場合、
衝突する仕組みにしたいと思っています。
(座標MINとMAXを常にロードする必要がありますが、)

キャラクターが動く床判定に乗っている場合は、床の動きに合わせて
キャラクターの座標を修正する必要があります。

もしよければ、誰か製作法か、製作にお勧めなサイトを
教えてくれませんか?どうか、よろしくお願いします。
2 日付:2010/04/15(木)13:35:00 ID:2iuB4losX8Zs

A.まず動く床を移動させる。このとき「移動前の座標」、「移動前と移動後の座標の変化量」を残す。

B.次にプレイヤーを移動させる。

C.プレイヤーと「移動前の床」とで当たり判定を計算する。

D.もし当たり判定があれば「移動前の床」と重ならないようプレイヤーの位置補正をする。さらに「移動前と移動後の座標の変化量」をプレイヤーの座標に加算する。

E.最後にプレイヤーと「移動後の床」とで当たり判定を計算する。

F.もし当たり判定があれば「移動後の床」と重ならないようプレイヤーの位置補正をする。



これで
結構な速度の床とでもいい感じに押し合えると思います。
3 名前:ううむ 日付:2010/04/15(木)13:36:14 ID:6bUIa6bNwgog
床って、3D的なものではないと察しましたが、
例えば、2Dでもクォータービュー(擬似的に3Dに見える)とかいろいろ
考えられます。
マリオのような、矩形が左右に動くものならば、
ゲーム定義のキーに反応して動く(左右に)ものをコンポーネント
(独自のタイムラインをもつMc)にして貼って常に動くようにしておき、
(左右のキーで反転する)、コンポーネントのエリアにキャラが入ったかどうかは
キャラの判定用の座標をコンポーネントに通知して真偽を得るようなつくりが
効率がよさそうなきがします。

このような処理のFlaなどを公開しているサイトは、国外にはあったようなきがしますね。
(以前、パックマンやインベーダーのFlaは見たことがあります。)




4 日付:2010/04/17(土)07:21:39 ID:x9JDoBxaOZQ1
>>2 >>3
キャラクターのスクリプト内にある
地形の当たり判定(固定)を使用しないで地形衝突判定を
作ることは出来ないでしょうか?
それが出来ないので移動が出来ないので・・・
5 名前:ううむ 日付:2010/04/17(土)11:25:04 ID:6bUIa6bNwgog
動く床(ブロック)にオブザーバー(インターフェース)を用意して
キャラクターのスクリプトにインプリメントします。

キャラクタの状態変異をしたときにイベントを返すようにオブザーバー
にパッシングします。Flashのイベントハンドラに自由にハンドラを
作ることが出来ます。いわゆるデザインパターンのオブザーバーモデル
になります。

ちなみに、状態変異のときにメッセージングを行う要の要素は
DelegateのCreateメソッドを使えば可能になります。
メッセージングコールバックを作ることが出来ます。イベント処理の
委譲などとも言われますが単にコールバックを作ると考えると
理解しやすいかもしれません。
デザインパターンでググルと参考資料はいくらでも出てきます。
6 名前:ううむの補足 日付:2010/04/17(土)11:29:14 ID:6bUIa6bNwgog
オブザーバー(監視者)とサブジェクト(被監視者)の関係は、
サブジェクト(この場合キャラクタ)がこうしてほしいを、
こうしてほしいときにオブザーバーに知らせるという
我々の世界のありきたりの要素です。

こうしてほしいをまつよりも、この時はこれをコールしてください
を投げておいて、このときになったら、「今」を送るということに
なります。
なのであくまでもサブジェクト主体になります。
このスレッドについて
質問の状態 :
未解決
投稿開始日 :
2010/04/15(木)07:20:20
投稿終了日 :
2010/04/17(土)11:29:14
投稿者 :
レス総数 :
6
スレッド番号 :
10
MondoCollectionSystem ver.0x00020000 by Hakuhin