今後の課題

アバター
BEAT
記事: 4
登録日時: 14年前
住所: 兵庫県S市杜王町
連絡を取る:

今後の課題

投稿記事 by BEAT » 14年前

なんだかんだで2月も終わりに近づいてきましたが、やること多すぎてやばい。

卒業式やらは別にどうでもいいんですが。
ゲーム製作と専門学校の事前課題と動画製作をやらないとなんですよね~
あとゲーム関係以外で言えばバイトの面接とか結構やることが多くてあたふたしてます

で、ゲーム製作今後の課題なんですが。
「のけぞったら壁にめり込んでしまう」。これを解消していきたいと思います。

MoNoさんが「1ピクセルずつずらして座標の状態しらべればいけると思いますよ」的なことを言ってたんですが。
オレのゲームののけぞり処理って「対象の座標の差がのけぞる方向と距離に関係している」んですよね。

つまりプレイヤーが敵より左に、かつ少し上に居たら、左にある程度飛んで上に少し移動します。
何でコレにしたかって言うと、「どんな場合でも一つの式で対応できるから」なんですが、移動方法が「足して代入を3回繰り返す」なんです

ですが、コレじゃあ1ピクセルごとに調べられないので、ココは得意の(笑)ごり押し(笑)で
「ぶつかり方→のけぞり方を8種類に分けて種類ごとに移動方向、移動距離を固定。その範囲で座標の状態を調べる」
という方法が今の自分には一番あってそうですww

こんなカンジで
画像

移動距離は2キャラ分の64ピクセルぐらいがベストかと思われます。

あとはのけぞり方を調べる関数と、のけぞり方を判別する定数と、のけぞり方定数によって方向の状態を調べる関数
を作れば、できる・・・はずww

こんな方法もあるよ~ってのがありましたらどんどん言っていただければうれしいです。
最後に編集したユーザー BEAT on 2011年5月11日(水) 17:57 [ 編集 1 回目 ]

ISLe
記事: 2650
登録日時: 15年前

Re: 今後の課題

投稿記事 by ISLe » 14年前

仰け反ったキャラが位置補正されたら、それを覚えておいて、次のフレームで自キャラを位置補正するようにしたら良い気がします。
「1フレームはめり込んでもいいじゃん」という発想です。

アバター
BEAT
記事: 4
登録日時: 14年前
住所: 兵庫県S市杜王町
連絡を取る:

Re: 今後の課題

投稿記事 by BEAT » 14年前

<ISLeさん
コメントありがとうございます。
つまり、ぶつかったときに移動範囲内の状態を調べるのではなく
マップオブジェや敵キャラに当たったときに座標修正を行うということですか?

ISLe
記事: 2650
登録日時: 15年前

Re: 今後の課題

投稿記事 by ISLe » 14年前

BEAT さんが書きました:つまり、ぶつかったときに移動範囲内の状態を調べるのではなく
マップオブジェや敵キャラに当たったときに座標修正を行うということですか?
そうですね。
単純にめり込んだら押し戻すということです。

いまは移動前に移動先をチェックしているのですか?
とても難しいことをやっている感じがしますね。

アバター
BEAT
記事: 4
登録日時: 14年前
住所: 兵庫県S市杜王町
連絡を取る:

Re: 今後の課題

投稿記事 by BEAT » 14年前

いまは移動前に移動先をチェックしているのですか?
とても難しいことをやっている感じがしますね。
いえ、これから作るところですが、たしかに移動範囲の状態調べても何も無かったら無駄ですもんね。

移動範囲は64ピクセルといいましたが、32ピクセル移動を2回行う予定なので
32ピクセル当たり判定を移動させる→何かに当たっている→移動した方向と逆の方向に当たらなくなるまで判定を移動→描画
ってカンジにできたら無駄も省けて理想的かもしれませんね
最後に編集したユーザー BEAT on 2011年2月21日(月) 22:31 [ 編集 1 回目 ]

アバター
MoNoQLoREATOR
記事: 284
登録日時: 14年前

Re: 今後の課題

投稿記事 by MoNoQLoREATOR » 14年前

1ピクセルずつ調べろといっておきながらナンですが、

①自分と敵がぶつかる(当たり判定が出る)
②のけぞらせる
③障害物と当たり判定を行い、あたっていたら押し出す

というようにたらいまわしにする方法が早いです。なにかフラグを用意しておけば、押しつぶされる判定もとれます。
ただ、仰け反らせたり押し出したりする方向を割り出すのが難しくなります。
入り込んだ後の座標からは、どの方向から入り込んだかは判断できませんので、前回x、y方向にどれだけ進んだのかを記憶しておく必要があるでしょう。それ以外の方法は今のところ思いつきません。


色々とお忙しいそうですが頑張ってください。
動画楽しみにしてます^^
久々に私も近々動画を上げるかもしれません。

アバター
BEAT
記事: 4
登録日時: 14年前
住所: 兵庫県S市杜王町
連絡を取る:

Re: 今後の課題

投稿記事 by BEAT » 14年前

移動方向と移動距離は固定してあるので、「どの方向から飛んできたのか」は分かるはずです。

あとはどれだけ入り込んだかはその方向と逆の方向に当たり判定がかぶらなくなるまで移動させるしかないですかね~

アバター
MNS
記事: 35
登録日時: 15年前

Re: 今後の課題

投稿記事 by MNS » 14年前

まったくイイ方法とは思えませんが、
壁や障害物を、4つの線分で囲まれたものとして、
また、キャラクターの衝突判定領域をこれまた4つの線分で囲んだものとして考えて、
線分と線分の衝突判定で、交点を計算すれば、
めり込んだ量は取得できるので、方向が分かれば押し戻せると思います。

ISLe
記事: 2650
登録日時: 15年前

Re: 今後の課題

投稿記事 by ISLe » 14年前

MNS さんが書きました:まったくイイ方法とは思えませんが、
20年以上ずっとその方法でゲーム作ってました。
なるほど根本的に違うのですね。

アバター
BEAT
記事: 4
登録日時: 14年前
住所: 兵庫県S市杜王町
連絡を取る:

Re: 今後の課題

投稿記事 by BEAT » 14年前

<MNSさん
その発想は無かった・・・なんで思いつかなかったんだ・・・

画期的な回答ありがとうございます!
あとはどうやって交点を求めるか・・・

アバター
MNS
記事: 35
登録日時: 15年前

Re: 今後の課題

投稿記事 by MNS » 14年前

アクションゲームなんて全く作ったことがなかったので、
RTS製作のときにつかった壁回避の考え方が使えるかな、と思って適当にコメントしたんですが、
役に立ったなら幸いです。というか、常套手段だったんですね。
ISLeさん混乱させてしまってすいません。きっとイイ方法なはずです~

衝突判定&交点計算ならマルペケさんのページが参考になるはずです。
http://marupeke296.com/COL_2D_No10_Segm ... gment.html
押し出す方向を予め法線ベクトルで定めておくと、スマートにできるかもしれません。