キャラクターの動かし方について

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
えん

キャラクターの動かし方について

#1

投稿記事 by えん » 14年前

今、マリオのようなアクションゲームを製作中なんですが、
コードをどのように組んでよいかわからず困っています。

作りたい内容なのですが、
①キャラクターを同時に二体操作する(1P,2Pという感じで)
②Y=FIELD_MAX_Yを地面とし、矢印キー左で左に、右で右に、上でジャンプする
③他のキャラクターとぶつかった際に、重ならないようにする(上に乗っかれる)
④上に乗っかっていた際、下のキャラがジャンプすると上のキャラも乗っかったまま動く
⑤他キャラの上に乗っかっている間もジャンプできる
といった感じです。

今①、②までは実現できたのですが、
③でつまづいています。

今まで考えたものとして、
1.キャラの四隅と他キャラの側面が重なったらその方向へ歩くフラグを消してみる
   →「重なる」という判定が1ドット分だったため、一度に5ドット動かすキャラ操作ではすり抜けてしまい失敗
2.キャラの四隅と他キャラの側面から内部5ドット分に当たり判定をつけ、最後に内部に食い込んでいる分だけ補正する
   →当たり判定がかぶるところが出てくる?(未実行)
のような感じになっています。

ソースコードですが、上の1から2へと書き換えている途中でごっちゃになっているので
あとで貼り付けようと思います。

どのように考えたらよいか、考え方を教えてください。

④、⑤は後で実装させようとしているものなので、お答えいただかなくても大丈夫です。
長文失礼しました。よろしくお願いいたします!

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 15年前
住所: 東海地方
連絡を取る:

Re: キャラクターの動かし方について

#2

投稿記事 by softya(ソフト屋) » 14年前

キャラクタは同時に動かさなければプログラムの流れで見たときに、相手のキャラクタは静止した障害物とみなすことが出来ます。なので当たり判定後の処理は障害物と同じです。
あと、地面判定を座標で行うのではなく下に動けない状態と定義すれば良いのでは無いでしょうか?

[追記]
同時に動かないとは、1フレーム内にキャラクタAの行動→キャラクタBの行動と順序だって行動させることって意味です。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

えん

Re: キャラクターの動かし方について

#3

投稿記事 by えん » 14年前

なるほど、ありがとうございます!

ちなみに障害物の当たり判定ですが、
http://dixq.net/g/26.htmlのように作るのがいいのでしょうか

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 15年前
住所: 東海地方
連絡を取る:

Re: キャラクターの動かし方について

#4

投稿記事 by softya(ソフト屋) » 14年前

えん さんが書きました:なるほど、ありがとうございます!

ちなみに障害物の当たり判定ですが、
http://dixq.net/g/26.htmlのように作るのがいいのでしょうか?
地形なら、それで良いと思いますがキャラクタ同士はつぎを参考にしてください。
「s11. 当たり判定。」
http://dixq.net/g/54.html
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

えん

Re: キャラクターの動かし方について

#5

投稿記事 by えん » 14年前

ありがとうございます。
では、上から接触したか横から接触したかを調べたいときには
ぶつかったときのキャラクタの中心座標同士を結んだ線と、地面の角度から求めればいいですかね?
(キャラクターの当たり判定は四角にする予定なので)

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 15年前
住所: 東海地方
連絡を取る:

Re: キャラクターの動かし方について

#6

投稿記事 by softya(ソフト屋) » 14年前

DXライブラリ本家のサンプルを参考にしてみてください。

「アクションサンプルプログラム」
http://homepage2.nifty.com/natupaji/DxL ... Sample.cpp
まず上下チェックして、そのあと左右のチェックです。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

えん

Re: キャラクターの動かし方について

#7

投稿記事 by えん » 14年前

何回も回答ありがとうございました!
参考にさせていただきます!

閉鎖

“C言語何でも質問掲示板” へ戻る