検索結果 105 件

by keito940
8年前
フォーラム: C言語何でも質問掲示板
トピック: GOTO文の使い道について
返信数: 9
閲覧数: 5795

Re: GOTO文の使い道について

ちなみに、D言語では、Java同様にbreak文とcontinue文にラベルを付けられるようになって、goto文はほとんど出番がなくなったけど、
D言語は「現実的なプログラミング」を謳っているので、Javaでは面倒だった部分をD言語では、goto文で楽に処理できるようになってます。
by keito940
8年前
フォーラム: C言語何でも質問掲示板
トピック: キャラのサイズを変更したらめり込みが多発するようになった。
返信数: 2
閲覧数: 2185

Re: キャラのサイズを変更したらめり込みが多発するようになった。

まあ、そうですよね…。って、そういうことではなくて、どうしたらめり込みが治るかを聞いているんですよ。
(まあ、ためになるんですけど…。)
by keito940
8年前
フォーラム: C言語何でも質問掲示板
トピック: CygwinにAllegroを導入?
返信数: 3
閲覧数: 2743

Re: CygwinにAllegroを導入?

MinGWのですけど、これを見ればわかると思いますよ。
by keito940
8年前
フォーラム: C言語何でも質問掲示板
トピック: キャラのサイズを変更したらめり込みが多発するようになった。
返信数: 2
閲覧数: 2185

キャラのサイズを変更したらめり込みが多発するようになった。

どうも、keito940です。前回はソースコード分離までをやりました。今回はキャラのサイズを変更したのですが、 開始してすぐに着地する途端ちょっと浮いてからめり込んで、くぼみの所まで来てしまいます。ジャンプして違う足場に来れば治るのですが、着地した足場に来るとまためり込んでしまいます。どうしたら問題の足場がめり込まないのでしょうか?どなたか教えてください。 main.cpp #include "DxLib.h" #define SCREEN_WIDTH (320) //画面の横幅 #define SCREEN_HEIGHT (240) //画面の縦幅 #define STAGE_WIDTH (...
by keito940
8年前
フォーラム: C言語何でも質問掲示板
トピック: Windows10 転ばぬ先のメディア作成ツール
返信数: 0
閲覧数: 2462

Re: Windows10 転ばぬ先のメディア作成ツール

販売広告ですね。通報いたしました。
by keito940
8年前
フォーラム: C言語何でも質問掲示板
トピック: ソースコードを分離したらエラーを吐き出した。
返信数: 3
閲覧数: 2739

Re: ソースコードを分離したらエラーを吐き出した。

main.cppの

コード:

int CameraX = 0;
int CameraY = 0;
を、

コード:

int CameraX, CameraY;
に変えて、
init()の部分に、

コード:

CameraX = 0, CameraY = 0;
を付け加えてから、問題の部分を

コード:

extern int CameraX, CameraY;
に変えたら、治りました。
オフトピック
コードを分離する時は、宣言と初期化処理は分離しないといけないのか…。
また一つゲーム制作への道が見えてきました…。
by keito940
8年前
フォーラム: C言語何でも質問掲示板
トピック: ソースコードを分離したらエラーを吐き出した。
返信数: 3
閲覧数: 2739

Re: ソースコードを分離したらエラーを吐き出した。

main.cppの

コード:

int CameraX = 0;
int CameraY = 0;
を、

コード:

int CameraX, CameraY;
に変えて、
init()の部分に、

コード:

CameraX = 0, CameraY = 0;
を付け加えてから、問題の部分を

コード:

extern int CameraX, CameraY;
に変えたら、治りました。
オフトピック
コードを分離する時は、宣言と初期化処理は分離しないといけないのか…。
また一つゲーム制作への道が見えてきました…。
by keito940
8年前
フォーラム: C言語何でも質問掲示板
トピック: ソースコードを分離したらエラーを吐き出した。
返信数: 3
閲覧数: 2739

ソースコードを分離したらエラーを吐き出した。

二段ジャンプまでなんとか実装できたのですが、コードを分離しようと思ってコードを分離してみたところ、LNK2005 "int CameraY" (?CameraY@@3HA) は既に main.obj で定義されています。(CameraXも同様です。)というエラーと、1 つ以上の複数回定義されているシンボルが見つかりました。 というエラーを吐き出してしまいます。どうすればちゃんとコンパイルできるのでしょうか? ソースコードは以下のとおりです。 main.cpp #include "DxLib.h" #define SCREEN_WIDTH (320) //画面の横幅 #define SCREEN...
by keito940
8年前
フォーラム: C言語何でも質問掲示板
トピック: レバー二回ダッシュが反応しない。
返信数: 15
閲覧数: 8569

Re: レバー二回ダッシュが反応しない。

移動処理を以下のようなコードにしたら、ちゃんとしたものが出るようになりました。 { int DashTime = 8; if ((Input&PAD_INPUT_2)) { RunButton = TRUE; } else { RunButton = FALSE; } //右へ移動 if (NonVertJump == FALSE && (Input&PAD_INPUT_RIGHT)) { NonVertJumpFlag = 1; Dir = TRUE; //レバー二段ダッシュの判定を行う if ((Input&PAD_INPUT_RIGHT)) { if ((DashT == TRUE &&...
by keito940
8年前
フォーラム: C言語何でも質問掲示板
トピック: レバー二回ダッシュが反応しない。
返信数: 15
閲覧数: 8569

Re: レバー二回ダッシュが反応しない。

二段ダッシュの判定らしきものを実装することはできました。(とは言っても、右だけですけど) ですが、どういうわけか、コンソールによると1Fだけしかダッシュせず、実質歩いている状態になってしまいます。 どうすればいいのでしょうか?何か原因があるのでしょうか。 #include "DxLib.h" #define SCREEN_WIDTH (320) //画面の横幅 #define SCREEN_HEIGHT (240) //画面の縦幅 #define STAGE_WIDTH (400) #define STAGE_HEIGHT (320) #define CHIP_SIZE (16) //チップの...
by keito940
8年前
フォーラム: C言語何でも質問掲示板
トピック: レバー二回ダッシュが反応しない。
返信数: 15
閲覧数: 8569

Re: レバー二回ダッシュが反応しない。

なんとなくではありますが、それらしい判定ができたので。とは言っても1フレームだけで、右にしか使えないのですが…。 後は、どうやってダッシュを維持させるかです…。 なお、コード全体の最初の、char型が宣言されている部分に部分にDirTを宣言してください。 //移動処理 { int DashT; int ContTimer = 8; //ベクトルを初期化し、加減速処理を行う。 if (NonVertJump == FALSE) { MoveX = 0.0F; VectX = 0.0F; MaxVect = 0.0F; } else { MoveX = VectX; } MoveY = 0.0F;...
by keito940
8年前
フォーラム: C言語何でも質問掲示板
トピック: レバー二回ダッシュが反応しない。
返信数: 15
閲覧数: 8569

Re: レバー二回ダッシュが反応しない。

ボタンを離せば、ダッシュのカウンターが始動するようにしてみましたが、やっぱり変わりません。 どこがおかしいのでしょうか? int main(void) { FreamStartTime = GetNowCount(); while (GetNowCount() - FreamStartTime < 1000 / 60) {} system("cls"); printf("メインループ開始\n"); printf("\nPlayerX=%d,PlayerY=%d,Grav=%8.2f,DropPower=%8.2f", (int)PlayerX, (int)PlayerY, Grav,DropP...
by keito940
8年前
フォーラム: C言語何でも質問掲示板
トピック: レバー二回ダッシュが反応しない。
返信数: 15
閲覧数: 8569

Re: レバー二回ダッシュが反応しない。

コードの構成を、参考にしたサイトのとおりにしてみました。 中身は変わらないと思います。 //移動処理 { int DashTime = 8; int ContTimer = 8; //ベクトルを初期化し、加減速処理を行う。 if (NonVertJump == FALSE) { MoveX = 0.0F; VectX = 0.0F; MaxVect = 0.0F; } else { MoveX = VectX; } MoveY = 0.0F; char RunButton; //0なら移動していない、1なら右へ移動中、2なら左へ移動中 char NonVertJumpFlag = 0; { i...
by keito940
8年前
フォーラム: C言語何でも質問掲示板
トピック: レバー二回ダッシュが反応しない。
返信数: 15
閲覧数: 8569

Re: レバー二回ダッシュが反応しない。

指摘してくれてありがとうございます。
さっきの式が常に真になるのなら、どうすればいいのですか?
レバー二回ダッシュのアルゴリズムは、今のサイトのであってますか?
by keito940
8年前
フォーラム: C言語何でも質問掲示板
トピック: レバー二回ダッシュが反応しない。
返信数: 15
閲覧数: 8569

Re: レバー二回ダッシュが反応しない。

すいません、しっかりコンパイルしたいと思います~。 ところで何か問題な点はありますか? int main(void) { FreamStartTime = GetNowCount(); while (GetNowCount() - FreamStartTime < 1000 / 60) {} system("cls"); printf("メインループ開始\n"); printf("\nPlayerX=%d,PlayerY=%d,Grav=%8.2f,DropPower=%8.2f", (int)PlayerX, (int)PlayerY, Grav,DropPower); printf("\n...
by keito940
8年前
フォーラム: C言語何でも質問掲示板
トピック: レバー二回ダッシュが反応しない。
返信数: 15
閲覧数: 8569

Re: レバー二回ダッシュが反応しない。

みけCATさんの言うとおりにしてみました。このコードはレバー二回ダッシュを実装しているように見えますが、ソニックみたいに、ダッシュが常に出た状態になってしまいます。どこに原因がありますか? int main(void) { FreamStartTime = GetNowCount(); while (GetNowCount() - FreamStartTime < 1000 / 60) {} system("cls"); printf("メインループ開始\n"); printf("\nPlayerX=%d,PlayerY=%d,Grav=%8.2f,DropPower=%8.2f", (int...
by keito940
8年前
フォーラム: C言語何でも質問掲示板
トピック: レバー二回ダッシュが反応しない。
返信数: 15
閲覧数: 8569

Re: レバー二回ダッシュが反応しない。

みけCAT さんが書きました: ソースコードが比較的長いので、質問が無いのであればあまり読みたくありません。
何か質問はありますか?
右に二回で右へダッシュを実装しているのに、右に二回押しても、ダッシュが出ないので、どうしたらダッシュできるのかを教えて下さい。
by keito940
8年前
フォーラム: C言語何でも質問掲示板
トピック: レバー二回ダッシュが反応しない。
返信数: 15
閲覧数: 8569

レバー二回ダッシュが反応しない。

ジャンプの距離調整が以外にも簡単すぎて驚きが隠せない人です。レバーを二回入れるとダッシュする機能を http://www48.atpages.jp/happynetwork/dash.html を参考にして実装しようとしているのですが、何故か、反応せずに通常の歩きのような速度になってしまいます。(具体的にはRunButtonがTRUEのときに、8.0Fになる感じです。) #include "DxLib.h" #define SCREEN_WIDTH (320) //画面の横幅 #define SCREEN_HEIGHT (240) //画面の縦幅 #define STAGE_WIDTH (40...
by keito940
8年前
フォーラム: C言語何でも質問掲示板
トピック: マリオ風のジャンプが出ない。(意図したとおりにならない)
返信数: 16
閲覧数: 8221

Re: マリオ風のジャンプが出ない。(意図したとおりにならない)

ごめんなさい、実は自己解決していました。それに際して前に質問いたした横へのジャンプも、そのルーチンに束ねました。 #include "DxLib.h" #define SCREEN_WIDTH (320) //画面の横幅 #define SCREEN_HEIGHT (240) //画面の縦幅 #define STAGE_WIDTH (400) #define STAGE_HEIGHT (320) #define CHIP_SIZE (16) //チップのサイズ #define MAP_WIDTH (STAGE_WIDTH/CHIP_SIZE) #define MAP_HEIGHT (STAGE...
by keito940
8年前
フォーラム: C言語何でも質問掲示板
トピック: マリオ風のジャンプが出ない。(意図したとおりにならない)
返信数: 16
閲覧数: 8221

Re: マリオ風のジャンプが出ない。(意図したとおりにならない)

サンプルコードをテストしてみたんですが、そういう感じなんですね。了解いたしました!! ちょっと日本語がおかしいですが、大体はその通りです。 ですが、何回でも垂直でジャンプできてしまいます。開発者コマンドプロンプトによるとジャンプフラグが立っていないことにあるようです。 int main(void) { FreamStartTime = GetNowCount(); while (GetNowCount() - FreamStartTime < 1000 / 60) {} system("cls"); printf("メインループ開始\n"); printf("\nPlayerX=%d,Play...
by keito940
8年前
フォーラム: C言語何でも質問掲示板
トピック: マリオ風のジャンプが出ない。(意図したとおりにならない)
返信数: 16
閲覧数: 8221

Re: マリオ風のジャンプが出ない。(意図したとおりにならない)

Mathさん、いつもありがとうございます。ですが、今のコードでは、小ジャンプしか出ません。 10F押せば、大ジャンプが出るのですが…。コードは以下のとおりです。 int main(void) { FreamStartTime = GetNowCount(); while (GetNowCount() - FreamStartTime < 1000 / 60) {} system("cls"); printf("メインループ開始\n"); printf("\nPlayerX=%d,PlayerY=%d,Grav=%8.1f,DropPower=%8.1f", (int)PlayerX, (int...
by keito940
8年前
フォーラム: C言語何でも質問掲示板
トピック: マリオ風のジャンプが出ない。(意図したとおりにならない)
返信数: 16
閲覧数: 8221

Re: マリオ風のジャンプが出ない。(意図したとおりにならない)

usao さんが書きました:まず,「マリオ風のジャンプ」…って何ですか? っていう具体的定義が不明.
usaoさん、ちょっと僕の説明が不適切でしたね…。僕の言うマリオ風と言うのは、「押す時間によってジャンプする距離が異なる」がわかりやすいでしょうか?でも、今のコードで押し続けていると、ジャンプし続けてしまうからこの質問をしているのです。
(私の知っているマリオとは違うけども)
一時期、ボタンを離すまではジャンプしないのかと思っていました。ごめんなさい。
by keito940
8年前
フォーラム: C言語何でも質問掲示板
トピック: マリオ風のジャンプが出ない。(意図したとおりにならない)
返信数: 16
閲覧数: 8221

Re: マリオ風のジャンプが出ない。(意図したとおりにならない)

Math さんが書きました:http://dixq.net/forum/viewtopic.php?f=3&t=18930に載せたコードは参考になりませんか?)
確かに参考にはなるんですが…。僕が考えているのとは違うと思います。
by keito940
8年前
フォーラム: C言語何でも質問掲示板
トピック: マリオ風のジャンプが出ない。(意図したとおりにならない)
返信数: 16
閲覧数: 8221

Re: マリオ風のジャンプが出ない。

今現在のコードはこんな感じです。何か回答はありますか? int main(void) { FreamStartTime = GetNowCount(); while (GetNowCount() - FreamStartTime < 1000 / 60) {} system("cls"); printf("メインループ開始\n"); printf("\nPlayerX=%d,PlayerY=%d,Grav=%8.1f,DropPower=%8.1f", (int)PlayerX, (int)PlayerY, Grav,DropPower); printf("\nMoveX=%8.1f,Move...
by keito940
8年前
フォーラム: C言語何でも質問掲示板
トピック: マリオ風のジャンプが出ない。(意図したとおりにならない)
返信数: 16
閲覧数: 8221

Re: マリオ風のジャンプが出ない。

いや解決じゃなかった、ジェットみたいなジャンプになっているんだった!!どうしたら、ジャンプボタンを離したと同時にジャンプできるんだろうか…
by keito940
8年前
フォーラム: C言語何でも質問掲示板
トピック: マリオ風のジャンプが出ない。(意図したとおりにならない)
返信数: 16
閲覧数: 8221

Re: マリオ風のジャンプが出ない。

ごめんなさい、また自己解決しました!! int main(void) { FreamStartTime = GetNowCount(); while (GetNowCount() - FreamStartTime < 1000 / 60) {} system("cls"); printf("メインループ開始\n"); printf("\nPlayerX=%d,PlayerY=%d,Grav=%8.1f,DropPower=%8.1f", (int)PlayerX, (int)PlayerY, Grav,DropPower); printf("\nMoveX=%8.1f,MoveY=%8.1f,...
by keito940
8年前
フォーラム: C言語何でも質問掲示板
トピック: マリオ風のジャンプが出ない。(意図したとおりにならない)
返信数: 16
閲覧数: 8221

Re: マリオ風のジャンプが出ない。

あと、少し変更してあります。斜めのジャンプはジャンプカウントに依存しないので出るのですが…。 int main(void) { FreamStartTime = GetNowCount(); while (GetNowCount() - FreamStartTime < 1000 / 60) {} system("cls"); printf("メインループ開始\n"); printf("\nPlayerX=%d,PlayerY=%d,Grav=%8.1f,DropPower=%8.1f", (int)PlayerX, (int)PlayerY, Grav,DropPower); printf(...
by keito940
8年前
フォーラム: C言語何でも質問掲示板
トピック: マリオ風のジャンプが出ない。(意図したとおりにならない)
返信数: 16
閲覧数: 8221

Re: マリオ風のジャンプが出ない。

あっ、そうか、全体のコードを出さなければいけないのか! というわけでプログラム全体のコードを出します。 //衝突のテストプログラム(だった) //アクションゲームのテストシステムを作る前に、 //めり込み防止のアルゴリズムを初心者なりに作らざるをえない。 //(完成しました) //でも現在はアクションゲーム全般のテストプログラムになりつつある…。 //現在マリオで使われるジャンプの加減速で悪戦苦闘中…。 //サンプルコードのジョイパッドのやつは欠陥だらけらしいことに気づき、ちょっと書き直し中…。 //(やっぱり、これでよかったのか…。) //しかしどうしたら加減速ができるんだ? //そうか!ス...
by keito940
8年前
フォーラム: C言語何でも質問掲示板
トピック: マリオ風のジャンプが出ない。(意図したとおりにならない)
返信数: 16
閲覧数: 8221

Re: マリオ風のジャンプが出ない。

何かと思えば、ちょっとしたミスだったんですね。すいませんでした。前のスレにも書いたように http://dixq.net/forum/viewtopic.php?f=3&t=11328 を参考にして、ジャンプを実装しようとしているのですが、ジャンプボタンを押しているつもりなのに何故か出ません。コンソールによれば、JumpTimerが、0のままなことにあるようです。コードは以下のとおりです。 int main(void) { FreamStartTime = GetNowCount(); while (GetNowCount() - FreamStartTime < 1000 / 60) {} ...
by keito940
8年前
フォーラム: C言語何でも質問掲示板
トピック: マリオ風の加減速付きジャンプができない。
返信数: 15
閲覧数: 7977

Re: マリオ風の加減速付きジャンプができない。

すいません。一応解決らしいので、ここで閉めさせて頂きます。
さっきの質問の件は、 http://dixq.net/forum/viewtopic.php?f=3&t=18931 でお願いします。
by keito940
8年前
フォーラム: C言語何でも質問掲示板
トピック: マリオ風のジャンプが出ない。(意図したとおりにならない)
返信数: 16
閲覧数: 8221

マリオ風のジャンプが出ない。(意図したとおりにならない)

http://dixq.net/forum/viewtopic.php?f=3&t=18906の続きです。 前回は加減速を(めり込むという問題点はあるもの)なんとか実装させたのですが、今度は小ジャンプを実装しようと思います。 …ですが、何故か何もしないとジャンプしてしまい、左右に入れると落下してしまいます。 前回から変更したコードは以下のとおりです。 int main(void) { FreamStartTime = GetNowCount(); while (GetNowCount() - FreamStartTime < 1000 / 60) {} system("cls"); print...
by keito940
8年前
フォーラム: C言語何でも質問掲示板
トピック: マリオ風の加減速付きジャンプができない。
返信数: 15
閲覧数: 7977

Re: マリオ風の加減速付きジャンプができない。

コードを以下のようにしたら、移動したときに落下して、何もしていないときにジャンプしてしまいます。 どうすれば治るのでしょうか?みけCATさん、1が代入されるじゃ不適切でしたね。正しくは長く押しているつもりなのにジャンプ時間用の変数が1しか増えないでした。こうすれば原因がわかるでしょう。 if (JumpTimer < 0) { if ((Input&PAD_INPUT_1) > PAD_INPUT_ON) { JumpTimer++; } } else { if (JumpTimer < 10 && NonVertJumpFlag == 0) { Grav = 0.5F; DropPower ...
by keito940
8年前
フォーラム: C言語何でも質問掲示板
トピック: マリオ風の加減速付きジャンプができない。
返信数: 15
閲覧数: 7977

Re: マリオ風の加減速付きジャンプができない。

もしかしてこういうことかなって思ったんですけど、今度はジャンプができなくなってしまいました。 int main(void) { FreamStartTime = GetNowCount(); while (GetNowCount() - FreamStartTime < 1000 / 60) {} system("cls"); printf("メインループ開始\n"); printf("\nPlayerX=%d,PlayerY=%d,Grav=%8.1f,DropPower=%8.1f", (int)PlayerX, (int)PlayerY, Grav,DropPower); printf(...
by keito940
8年前
フォーラム: C言語何でも質問掲示板
トピック: マリオ風の加減速付きジャンプができない。
返信数: 15
閲覧数: 7977

Re: マリオ風の加減速付きジャンプができない。

更に改造を加えるついでに http://dixq.net/forum/viewtopic.php?f=3&t=11328 を参考にして、マリオ同様にジャンプの量を調整できるようにしてみました。 …ですが、長く押しているつもりなのに短く押したとみなされてしまいます。デバッグ用コンソールさんによると、ジャンプ時間の変数に長く押しているはずなのに1しか代入されていません。 int main(void) { FreamStartTime = GetNowCount(); while (GetNowCount() - FreamStartTime < 1000 / 60) {} system("cls"...
by keito940
8年前
フォーラム: C言語何でも質問掲示板
トピック: マリオ風の加減速付きジャンプができない。
返信数: 15
閲覧数: 7977

Re: マリオ風の加減速付きジャンプができない。

要は、移動しながらジャンプしたときに、その距離を保存して、前に行くときは落下力を追加して、後ろに行くときは保存した距離と落下力を下げるわけですね? (本コードでは保存した距離はVectXとよんでいます。) でも、時折めり込んでしまいます。なので解決したとは言い切れません。次の課題はめり込み防止のアルゴリズムの組み方を教えて下さい。 int main(void) { FreamStartTime = GetNowCount(); while (GetNowCount() - FreamStartTime < 1000 / 60) {} system("cls"); printf("メインループ開...
by keito940
8年前
フォーラム: C言語何でも質問掲示板
トピック: マリオ風の加減速付きジャンプができない。
返信数: 15
閲覧数: 7977

Re: マリオ風の加減速付きジャンプができない。

マリオみたいなジャンプがうまくいかない…。 どうすればいいんだ? //衝突のテストプログラム(だった) //アクションゲームのテストシステムを作る前に、 //めり込み防止のアルゴリズムを初心者なりに作らざるをえない。 //(完成しました) //でも現在はアクションゲーム全般のテストプログラムになりつつある…。 //現在マリオで使われるジャンプの加減速で悪戦苦闘中…。 //サンプルコードのジョイパッドのやつは欠陥だらけらしいことに気づき、ちょっと書き直し中…。 //(やっぱり、これでよかったのか…。) //しかしどうしたら加減速ができるんだ? //そうか!スピードを保存して、移動している方向を決...
by keito940
8年前
フォーラム: C言語何でも質問掲示板
トピック: マリオ風の加減速付きジャンプができない。
返信数: 15
閲覧数: 7977

Re: マリオ風の加減速付きジャンプができない。

皆様のおかげさまで、ちゃんと横にジャンプできるようになりました。ですが、加減速が反応しないようです。 //衝突のテストプログラム(だった) //アクションゲームのテストシステムを作る前に、 //めり込み防止のアルゴリズムを初心者なりに作らざるをえない。 //(完成しました) //でも現在はアクションゲーム全般のテストプログラムになりつつある…。 //現在マリオで使われるジャンプの加減速で悪戦苦闘中…。 //サンプルコードのジョイパッドのやつは欠陥だらけらしいことに気づき、ちょっと書き直し中…。 //(やっぱり、これでよかったのか…。) //しかし、どうしたら加減速ができるんだ? //Creat...
by keito940
8年前
フォーラム: C言語何でも質問掲示板
トピック: マリオ風の加減速付きジャンプができない。
返信数: 15
閲覧数: 7977

Re: マリオ風の加減速付きジャンプができない。

失礼しました。一部のコードだけじゃわかりにくかったですね。 //衝突のテストプログラム(だった) //アクションゲームのテストシステムを作る前に、 //めり込み防止のアルゴリズムを初心者なりに作らざるをえない。 //(完成しました) //でも現在はアクションゲーム全般のテストプログラムになりつつある…。 //現在マリオで使われるジャンプの加減速で悪戦苦闘中…。 //サンプルコードのジョイパッドのやつは欠陥だらけらしいことに気づき、ちょっと書き直し中…。 //Create 2017/02/10 #include "DxLib.h" #define SCREEN_WIDTH (320) //画面の...
by keito940
8年前
フォーラム: C言語何でも質問掲示板
トピック: マリオ風の加減速付きジャンプができない。
返信数: 15
閲覧数: 7977

Re: マリオ風の加減速付きジャンプができない。

そういえば、サンプルコードのジョイパッドは一つのボタンしか読み出せないことに気づいて、 ゲームプログラミングの館を参考に複数のボタンを獲得するコードを書いてみましたが、ジョイパッドが反応しません。 どうしたらジョイパッドが反応するんですか?教えてください。 int init(void) { ChangeWindowMode(TRUE),SetGraphMode(320,240,32),printf("初期化しています…"); if (DxLib_Init() == -1) { return -1; } PlayerX = 240.0F, PlayerY = 200.0F, MoveX = 0....
by keito940
8年前
フォーラム: C言語何でも質問掲示板
トピック: マリオ風の加減速付きジャンプができない。
返信数: 15
閲覧数: 7977

マリオ風の加減速付きジャンプができない。

毎度のことながらすいません。スクロールの件は一応解決としましたが、今度は、マリオ風の加減速を実装しようとしてます。 ですが、何故か、垂直ジャンプしかできません。どうすればいいのでしょうか?コードは以下のとおりです。(僕なりにどうやって対策したのかはコメントに書かれてます。) //衝突のテストプログラム(だった) //アクションゲームのテストシステムを作る前に、 //めり込み防止のアルゴリズムを初心者なりに作らざるをえない。 //(完成しました) //でも現在はアクションゲーム全般のテストプログラムになりつつある…。 //現在マリオで使われるジャンプの加減速で悪戦苦闘中…。 //Create 2...
by keito940
8年前
フォーラム: C言語何でも質問掲示板
トピック: カメラを実装したら当たり判定がずれた。
返信数: 23
閲覧数: 12289

Re: カメラを実装したら当たり判定がずれた。

あ…ありのままおこったことを話すぜ!コードを以下の通りにしたら、「当たり判定がずれなくなった」 int main(void) { FreamStartTime = GetNowCount(); while (GetNowCount() - FreamStartTime < 1000 / 60) {} system("cls"); printf("メインループ開始\n"); printf("\nPlayerX=%d,PlayerY=%d,Grav=%8.1f,DropPower=%8.1f", (int)PlayerX, (int)PlayerY, Grav,DropPower); printf...
by keito940
8年前
フォーラム: C言語何でも質問掲示板
トピック: カメラを実装したら当たり判定がずれた。
返信数: 23
閲覧数: 12289

Re: カメラを実装したら当たり判定がずれた。

当たり判定の箇所を見た感じだと,真ん中? 描画時は矩形の角の点として使われているようだが…? そうです。 なんとかキャラを画面内に合わせることができました。 コードは以下のとおりです。 int main(void) { FreamStartTime = GetNowCount(); while (GetNowCount() - FreamStartTime < 1000 / 60) {} system("cls"); printf("メインループ開始\n"); printf("\nPlayerX=%d,PlayerY=%d,Grav=%8.1f,DropPower=%8.1f", (int)...
by keito940
8年前
フォーラム: C言語何でも質問掲示板
トピック: カメラを実装したら当たり判定がずれた。
返信数: 23
閲覧数: 12289

Re: カメラを実装したら当たり判定がずれた。

みけCATさん、ご指摘ありがとうございます。コードを以下の通りにしたら治りました。 { int i, j; for (i = 0; i < MAP_HEIGHT; i++) { for (j = 0; j < MAP_WIDTH; j++) { if (MapData[i][j] == 1) { DrawBox(j*CHIP_SIZE - CameraX, i*CHIP_SIZE - CameraY, j*CHIP_SIZE + CHIP_SIZE - CameraX, i*CHIP_SIZE - CHIP_SIZE - CameraY, GetColor(255, 255, 255), TR...
by keito940
8年前
フォーラム: C言語何でも質問掲示板
トピック: カメラを実装したら当たり判定がずれた。
返信数: 23
閲覧数: 12289

Re: カメラを実装したら当たり判定がずれた。

usaoさんの言うとおりに、カメラの関数を作って、横のスクロールはうまく行ったのですが、縦のスクロールがうまくできません。 でも、内部処理上では落下しているようです。 ちなみに、コードは以下のとおりです。 //カメラの位置計算 int CameraCheck(float X, float Y) { //カメラのチェック CharX = X; CharY = Y; //カメラの位置を計算する CameraX = CharX - SCREEN_WIDTH / 2; CameraY = CharY - SCREEN_HEIGHT / 2; //カメラの補正 if (CameraX < 0)Camer...
by keito940
8年前
フォーラム: C言語何でも質問掲示板
トピック: カメラを実装したら当たり判定がずれた。
返信数: 23
閲覧数: 12289

Re: カメラを実装したら当たり判定がずれた。

もるもさんの言うとおりにカメラ分を計算させてみたのですが、キャラがマップの中央に行って衝突したっきり動きません。 WaitKeyによると、一度落下してから、以下のコンソールのような当たり判定に衝突しましたと出るのです。 int main(void) { FreamStartTime = GetNowCount(); while (GetNowCount() - FreamStartTime < 1000 / 60) {} system("cls"); printf("メインループ開始\n"); printf("\nPlayerX=%d,PlayerY=%d,Grav=%8.1f,DropPow...
by keito940
8年前
フォーラム: C言語何でも質問掲示板
トピック: カメラを実装したら当たり判定がずれた。
返信数: 23
閲覧数: 12289

Re: カメラを実装したら当たり判定がずれた。

http://dixq.net/forum/viewtopic.php?f=3&t=7765 は横スクロールの話であって縦スクロールの参考にはならないと思いますよ。横より縦の方が面倒かも? えーっと、つまり、横スクロールは非常に簡単というわけですね。実はもう一つ解決したいのがありまして、キャラが画面の端まで来たらカメラを止まらず、カメラも動いてしまいます。結構めんどくさいらしいので頑張ります! メインループ開始 PlayerX=160,PlayerY=225,Grav= 0.5,DropPower= 10.0 MoveX= 0.0,MoveY= 10.0,Jump=1 CharX=160,C...
by keito940
8年前
フォーラム: C言語何でも質問掲示板
トピック: カメラを実装したら当たり判定がずれた。
返信数: 23
閲覧数: 12289

カメラを実装したら当たり判定がずれた。

前回、当たり判定を苦心して実装しました。今度は、 http://dixq.net/forum/viewtopic.php?f=3&t=7765 を参考にして、縦スクロールを作って、なんとかカメラをキャラに向かせることに成功したのですが、今度は当たり判定全体がずれてしまいます。どうすればいいのでしょうか? コードは以下のとおりです。 //衝突のテストプログラム //アクションゲームのテストシステムを作る前に、 //めり込み防止のアルゴリズムを初心者なりに作らざるをえない。 //Create 2017/02/10 #include "DxLib.h" #define SCREEN_WIDTH (3...
by keito940
8年前
フォーラム: C言語何でも質問掲示板
トピック: キャラが壁にハマってしまう
返信数: 75
閲覧数: 35278

Re: キャラが壁にハマってしまう

ということは解決というわけですね…。
ありがとうございました。
by keito940
8年前
フォーラム: C言語何でも質問掲示板
トピック: キャラが壁にハマってしまう
返信数: 75
閲覧数: 35278

Re: キャラが壁にハマってしまう

http://dixq.net/forum/viewtopic.php?f=3&t=7765を参考にして、縦のカメラスクロールを作ってみました。…ですが、キャラの重力のとカメラの動きが逆になってしまいます。どこがおかしいのでしょうか?衝突判定は一応完成しました。 //衝突のテストプログラム //アクションゲームのテストシステムを作る前に、 //めり込み防止のアルゴリズムを初心者なりに作らざるをえない。 //Create 2017/02/10 #include "DxLib.h" #define SCREEN_WIDTH (320) //画面の横幅 #define SCREEN_HEIGHT (...
by keito940
8年前
フォーラム: C言語何でも質問掲示板
トピック: キャラが壁にハマってしまう
返信数: 75
閲覧数: 35278

Re: キャラが壁にハマってしまう

なんとか、完成にまでこぎつけました。ですが、今度はアクションゲームの坂道を実装しなければいけません。 サンプルコードを確認しながら、頑張っていきたいと思います。 //衝突のテストプログラム //アクションゲームのテストシステムを作る前に、 //めり込み防止のアルゴリズムを初心者なりに作らざるをえない。 //Create 2017/02/10 #include "DxLib.h" #define SCREEN_WIDTH (320) //画面の横幅 #define SCREEN_HEIGHT (240) //画面の縦幅 #define CHIP_SIZE (16) //チップのサイズ #defi...
by keito940
8年前
フォーラム: C言語何でも質問掲示板
トピック: キャラが壁にハマってしまう
返信数: 75
閲覧数: 35278

Re: キャラが壁にハマってしまう

どうやら簡単なミスだったようです。ちなみに現在のコードは、以下のとおりです。(気づくのがおそすぎた…) //衝突判定 int MapHitCheck(float X, float Y, float *MoveX, float *MoveY, int Size) { float afX, afY; afX = X + *MoveX; afY = Y + *MoveY; float blx, brx, bby, bty; blx = (float)((int)afX / Size)*Size; brx = (float)((int)afX / Size + 1)*Size; bty = (floa...
by keito940
8年前
フォーラム: C言語何でも質問掲示板
トピック: 上と左右の当たり判定がおかしいです。
返信数: 3
閲覧数: 2419

Re: 上と左右の当たり判定がおかしいです。

え~原因がわかりました。どうやら、キャラのサイズの管理は浮動小数点型ではなく、整数型だったようです。 //衝突判定 int MapHitCheck(float X, float Y, float *MoveX, float *MoveY, int Size) { float afX, afY; afX = X + *MoveX; afY = Y + *MoveY; float blx, brx, bby, bty; blx = (float)((int)afX / Size)*Size; brx = (float)((int)afX / Size + 1)*Size; bty = (float...
by keito940
8年前
フォーラム: C言語何でも質問掲示板
トピック: 上と左右の当たり判定がおかしいです。
返信数: 3
閲覧数: 2419

Re: 上と左右の当たり判定がおかしいです。

部分的なソースコードだけでしたね。ごめんなさい。ソースコード全体を上げたいと思います。ちなみに左右の当たり判定がおかしい原因は、左下と左上と当たり判定が同時に出ていることにあるようです。この不具合をどうやって解消するのか教えてください。(原因が特定できるよう、少し変えてあります。) //衝突のテストプログラム //アクションゲームのテストシステムを作る前に、 //めり込み防止のアルゴリズムを初心者なりに作らざるをえない。 //Create 2017/02/10 #include "DxLib.h" #define SCREEN_WIDTH (320) //画面の横幅 #define SCREE...
by keito940
8年前
フォーラム: C言語何でも質問掲示板
トピック: キャラが壁にハマってしまう
返信数: 75
閲覧数: 35278

Re: キャラが壁にハマってしまう

…どうやら、先程から質問している件は別なところでやってください、というわけでですね。
ということで、スレを立ててみました。近況報告はここでやりますので。
当たり判定に関する質問はこちらです。
by keito940
8年前
フォーラム: C言語何でも質問掲示板
トピック: 上と左右の当たり判定がおかしいです。
返信数: 3
閲覧数: 2419

上と左右の当たり判定がおかしいです。

( このスレ と合わせて読んで、お答えください。) 現在アクションゲームの当たり判定に悪戦苦闘している人です。どうやら別なところでやれということに気づきこれを立てました。 今起こっている症状:下の当たり判定は完成しているが、上に当たると下に大きく押し出されてしまう。 左右の当たり判定は左に衝突すると、右に大きく押し出してしまう。また右に衝突して左に行こうとすると、何故か倍速で右に行ってしまう。 問題のコードをあげますので自分でデバッグできる方はそれをご覧ください。 //衝突判定 int MapHitCheck(float X, float Y, float *MoveX, float *Mov...
by keito940
8年前
フォーラム: C言語何でも質問掲示板
トピック: キャラが壁にハマってしまう
返信数: 75
閲覧数: 35278

Re: キャラが壁にハマってしまう

つまり、ポインタはよく考えて使ってくださいということですね。ちょっと見直しました。 さて、地面に着地する空中に少し浮く上に数回着地する原因ですが、着地と同時にDropPowerに1.5Fの実数が何故か代入されてしまっていることにあるようです。 また、左に衝突すると、右に跳ね返ってしまい、右に衝突して、左に行こうとすると、もっと右に行って、そのまま画面外へと行ってしまいます。 衝突判定と当たり判定チェックのコードを見せますので、どこがおかしいのかご指摘願います。 //衝突判定 int MapHitCheck(float X, float Y, float *MoveX, float *MoveY...
by keito940
8年前
フォーラム: C言語何でも質問掲示板
トピック: キャラが壁にハマってしまう
返信数: 75
閲覧数: 35278

Re: キャラが壁にハマってしまう

何回かトライ&エラーしてみた結果、当たり判定が暴走を起こしていたことにあることがわかりました。そこでその暴走を止めようと以下のコードを入れたのですが、hsizeの部分で、「式には整数型または対象範囲外の列挙型を使用する必要があります」というエラーを起こしてしまいます。どこを直せばいいのでしょうか? //衝突判定 int MapHitCheck(float *X, float *Y, float *MoveX, float *MoveY,float Size) { float afX, afY; afX = *X + *MoveX; afY = *Y + *MoveY; float blx,br...
by keito940
8年前
フォーラム: C言語何でも質問掲示板
トピック: キャラが壁にハマってしまう
返信数: 75
閲覧数: 35278

Re: キャラが壁にハマってしまう

頃はよしと、衝突判定の関数を統合させて見たのですが、左に動くと地面に落ちてしまいます。 しかも、キャラが画像のようになってしまいます。まだまだアクションゲームを作る前に課題がありそうです… //衝突のテストプログラム //アクションゲームのテストシステムを作る前に、 //めり込み防止のアルゴリズムを初心者なりに作らざるをえない。 //Create 2017/02/10 #include "DxLib.h" #define SCREEN_WIDTH (320) //画面の横幅 #define SCREEN_HEIGHT (240) //画面の縦幅 #define CHIP_SIZE (16) /...
by keito940
8年前
フォーラム: C言語何でも質問掲示板
トピック: キャラが壁にハマってしまう
返信数: 75
閲覧数: 35278

Re: キャラが壁にハマってしまう

cattailさんが1フレームの流れを気にしろと言うことで、1フレームの流れをコンソールに写してみました。下の当たり判定と同時に着地判定が行われているようですね…。どうすれば、着地判定と下の当たり判定を分離させることができるのでしょうか?ちなみにサンプルコード(http://dxlib.o.oo7.jp/program/ActionSample.cpp)ではしっかり分離されていたようです。 //衝突のテストプログラム //アクションゲームのテストシステムを作る前に、 //めり込み防止のアルゴリズムを初心者なりに作らざるをえない。 //Create 2017/02/10 #include "Dx...
by keito940
8年前
フォーラム: C言語何でも質問掲示板
トピック: キャラが壁にハマってしまう
返信数: 75
閲覧数: 35278

Re: キャラが壁にハマってしまう

失礼しました。No.63の件は簡単なミスだったようです。何回もトライ&エラーした結果、下の衝突判定が地面に着地するまで何回も行われているという事実を知りました。通常、アクションゲームで地面に着地する回数は1回だけなんですが、どういうわけか、何回も衝突してから地面に着地しているようです。 今現在のコードはこんな感じです。 移動アルゴリズム(No.63の件は修正しました。) int MoveCharUp(float X, float *Y, float *MoveX, float *MoveY, float *Drop,float Size) { float bty; float afY = *Y...
by keito940
8年前
フォーラム: C言語何でも質問掲示板
トピック: キャラが壁にハマってしまう
返信数: 75
閲覧数: 35278

Re: キャラが壁にハマってしまう

関数を合体させるのはまだ早いということに気づき分離してみました。ですが、上に衝突したり床から床へ移動すると地面に延々と落下してしまう上に、 一番最初に下に着地させても、ジャンプしない限り、右にも左にも行きません。どこがおかしいのでしょうか? 当たり判定のアルゴリズム int MoveCharUp(float X, float *Y, float *MoveX, float *MoveY, float *Drop,float Size) { float bty; float afY = *Y + *MoveY; bty = (float)((int)afY / Size)*Size; //上にす...
by keito940
8年前
フォーラム: C言語何でも質問掲示板
トピック: キャラが壁にハマってしまう
返信数: 75
閲覧数: 35278

Re: キャラが壁にハマってしまう

コードをこの様にしたら上の当たり判定が勝手に落下していっているのが確認されました。 僕は、何をしたらいいのかを考えられないので教えてくれませんか? //移動アルゴリズム int MoveChar(float *X, float *Y, float *MoveX, float *MoveY, float G, float *Drop, char *Jump, float Size) { float blx, brx, bby, bty; float afX = *X + *MoveX; float afY = *Y + *MoveY; //当たり判定 blx = (float)((int)afX...
by keito940
8年前
フォーラム: C言語何でも質問掲示板
トピック: キャラが壁にハマってしまう
返信数: 75
閲覧数: 35278

Re: キャラが壁にハマってしまう

ようやく、原因が見えてきました。常に上に衝突している状態が原因にあるようです。(詳しくはコンパイルしてみてください。) どうすれば、その状態を改善できるのでしょうか? 移動アルゴリズム int MoveChar(float *X, float *Y, float *MoveX, float *MoveY, float G, float *Drop, char *Jump, float Size) { float blx, brx, bby, bty; float afX = *X + *MoveX; float afY = *Y + *MoveY; //当たり判定 blx = (float)(...
by keito940
8年前
フォーラム: C言語何でも質問掲示板
トピック: キャラが壁にハマってしまう
返信数: 75
閲覧数: 35278

Re: キャラが壁にハマってしまう

おかげさまでNo.57の件は解決いたしました。…しかし、地面に埋まってしまうので、アルゴリズムをまとめてみたのはいいのですが、キャラが中央にとどまったままです。(ちなみにここで挫折しました…。)どうやったら、ちゃんと動いてくれるのでしょうか? //衝突のテストプログラム //アクションゲームのテストシステムを作る前に、 //めり込み防止のアルゴリズムを初心者なりに作らざるをえない。 //Create 2017/02/10 #include "DxLib.h" #define SCREEN_WIDTH (320) //画面の横幅 #define SCREEN_HEIGHT (240) //画面の...
by keito940
8年前
フォーラム: C言語何でも質問掲示板
トピック: キャラが壁にハマってしまう
返信数: 75
閲覧数: 35278

Re: キャラが壁にハマってしまう

申し遅れました。usaoさんありがとうございます! どうやら、着地判定が地面に付く前に発動する上に、着地後も地面に埋まってしまいます。 どこがおかしいのでしょうか?()の部分であることは確かです。 //右の移動アルゴリズム int MoveCharRight(float *X, float Y, float *MoveX, float Size) { float blx; float afX = *X + *MoveX; blx = (float)((int)afX / Size)*Size; //すすめるなら、更新する if (MapChipParam(afX + *MoveX , Y) =...
by keito940
8年前
フォーラム: C言語何でも質問掲示板
トピック: キャラが壁にハマってしまう
返信数: 75
閲覧数: 35278

Re: キャラが壁にハマってしまう

コードを分離したら効率よく左右の当たり判定ができましたが、ジャンプができない上に地面に少し埋まりこんでから「着地しました。」と出ます。 どうすればいいんでしょうか? 当たり判定アルゴリズム int MoveCharRight(float *X, float Y, float *MoveX, float Size) { float blx; float afX = *X + *MoveX; blx = (float)((int)afX / Size)*Size; //すすめるなら、更新する if (MapChipParam(afX + *MoveX , Y) == 0) { *X = afX; ...
by keito940
8年前
フォーラム: C言語何でも質問掲示板
トピック: キャラが壁にハマってしまう
返信数: 75
閲覧数: 35278

Re: キャラが壁にハマってしまう

右の当たり判定はなんとか完成させ、右へ動かすということはできました。…ですが、左の当たり判定を入れた途端にめりこんでしまいます。 それを回避しようとして、else if文を使って見たのですが、右で衝突して左に行こうとするとめり込んでしまう上に壁の中でしか動けなくなってしまいます。 今現在の当たり判定のアルゴリズム int CharMove(float *X, float *Y, float MoveX, float MoveY, float Size){ float Dummy = 0.0F; float hsize; hsize = Size * 0.5F; { if (MapHitChec...
by keito940
8年前
フォーラム: C言語何でも質問掲示板
トピック: キャラが壁にハマってしまう
返信数: 75
閲覧数: 35278

Re: キャラが壁にハマってしまう

おかげさまで無事に解決しましたが、今度はマップがコードのようにならず、No.40の画像のようになってしまいます。 どうやれば解決できるのしょうか?アクションゲームのコードでは、普通にコード通りになってました。 //衝突のテストプログラム //アクションゲームのテストシステムを作る前に、 //めり込み防止のアルゴリズムを初心者なりに作らざるをえない。 //Create 2017/02/10 #include "DxLib.h" #define SCREEN_WIDTH (320) //画面の横幅 #define SCREEN_HEIGHT (240) //画面の縦幅 #define CHIP_S...
by keito940
8年前
フォーラム: C言語何でも質問掲示板
トピック: キャラが壁にハマってしまう
返信数: 75
閲覧数: 35278

Re: キャラが壁にハマってしまう

どうやって、コンパイラの警告レベルを最大にするのですか?
Visual Studio 2015の場合を教えて下さい。
by keito940
8年前
フォーラム: C言語何でも質問掲示板
トピック: キャラが壁にハマってしまう
返信数: 75
閲覧数: 35278

Re: キャラが壁にハマってしまう

頑張って衝突プログラムのコードを書いています。添付した画像のようになって、メインループ開始と出たまま動きません。どういうことなんでしょうか? コードは以下のとおりです。 //衝突のテストプログラム //アクションゲームのテストシステムを作る前に、 //めり込み防止のアルゴリズムを初心者なりに作らざるをえない。 //Create 2017/02/10 #include "DxLib.h" #define SCREEN_WIDTH (320) //画面の横幅 #define SCREEN_HEIGHT (240) //画面の縦幅 #define CHIP_SIZE (16) //チップのサイズ #...
by keito940
8年前
フォーラム: C言語何でも質問掲示板
トピック: キャラが壁にハマってしまう
返信数: 75
閲覧数: 35278

Re: キャラが壁にハマってしまう

衝突のプログラムを組み始めたのはいいのですが、DXライブラリが初期化と同時に勝手に終了して衝突プログラムに入りません。 どういうことなんでしょうか…。(かんたんなミスかもしれませんが…) //衝突のテストプログラム //アクションゲームのテストシステムを作る前に、 //めり込み防止のアルゴリズムを初心者なりに作らざるをえない。 //Create 2017/02/10 #include "DxLib.h" #define SCREEN_WIDTH (320) //画面の横幅 #define SCREEN_HEIGHT (240) //画面の縦幅 #define CHIP_SIZE (16) //...
by keito940
8年前
フォーラム: C言語何でも質問掲示板
トピック: キャラが壁にハマってしまう
返信数: 75
閲覧数: 35278

Re: キャラが壁にハマってしまう

cattail さんが書きました: ほんとにやる気ですか?その道は険しいですよ。
cattailさん、そのつもりです!!この場面で何か困ったことがあったのなら、質問をしますので!!
by keito940
8年前
フォーラム: C言語何でも質問掲示板
トピック: キャラが壁にハマってしまう
返信数: 75
閲覧数: 35278

Re: キャラが壁にハマってしまう

了解しました。
今作っているところです。
追記:最終的には四方の衝突判定を作るわけですよね?
by keito940
8年前
フォーラム: C言語何でも質問掲示板
トピック: キャラが壁にハマってしまう
返信数: 75
閲覧数: 35278

Re: キャラが壁にハマってしまう

やっぱり中央にとどまったままのようです。しかも、内部処理上では落下したままなので困っています。 当たり判定 //当たり判定チェック int MoveChecker(float *X, float *Y, float *DropPower, float MoveX, float MoveY,float *SaveX, float *SaveY, float Size, char *JumpFlag, char *AirFlag) { float Dummy = 0.0F; float hsize; //直前のフレームを保存する float Prev_X = *X; float Prev_Y = ...
by keito940
8年前
フォーラム: C言語何でも質問掲示板
トピック: キャラが壁にハマってしまう
返信数: 75
閲覧数: 35278

Re: キャラが壁にハマってしまう

しかし、今度は、キャラが中央にとどまったままのようです。
by keito940
8年前
フォーラム: C言語何でも質問掲示板
トピック: キャラが壁にハマってしまう
返信数: 75
閲覧数: 35278

Re: キャラが壁にハマってしまう

cattailさん、あなたのアドバイスは実に頼りになるのですが、当のコードの方は うまく行っていません 。(地面に埋まってしまったり、右にしか動けない状態になったりします。)具体的にどう書けば、ちゃんとした当たり判定になるのでしょうか?教えてください。 //マップの当たり判定 int MapHitCheck(float X, float Y, float *MoveX, float *MoveY) { float afX, afY; afX = X + *MoveX; afY = Y + *MoveY; if (GetChipParam(X, Y) == 1) { float blx, bty...
by keito940
8年前
フォーラム: C言語何でも質問掲示板
トピック: キャラが壁にハマってしまう
返信数: 75
閲覧数: 35278

Re: キャラが壁にハマってしまう

ええっ!?そうだったんですか!?でも、やっぱりめり込みが起こってしまうようです…。何かが間違っているのですが、どこが間違っているのでしょうか…。 後々(アクションゲームでは)重要となるかもしれないので直前のフレームを実装してみました。まあ、これが解決すれば当分は大丈夫でしょうかね…? int MoveChecker(float *X, float *Y, float *DropPower, float MoveX, float MoveY, float Size, char *JumpFlag, char *AirFlag, char *HitFlagX, char *HitFlagY) { ...
by keito940
8年前
フォーラム: C言語何でも質問掲示板
トピック: キャラが壁にハマってしまう
返信数: 75
閲覧数: 35278

Re: キャラが壁にハマってしまう

どうやら当たり判定のGetChipParamにも不具合らしきものがあったようです。 //当たり判定チェック int MoveChecker(float *X, float *Y, float *DropPower, float MoveX, float MoveY, float Size, char *JumpFlag, char *AirFlag, char *HitFlagX, char *HitFlagY) { float Dummy = 0.0F; float hsize; hsize = Size*0.5F; //上下移動成分をチェック { //左下 if (MapHitCheck(...
by keito940
8年前
フォーラム: C言語何でも質問掲示板
トピック: キャラが壁にハマってしまう
返信数: 75
閲覧数: 35278

Re: キャラが壁にハマってしまう

ソースコードを更新しました。 //当たり判定チェック int MoveChecker(float *X, float *Y, float *DropPower, float MoveX, float MoveY, float Size, char *JumpFlag, char *AirFlag, char *HitFlagX, char *HitFlagY) { float Dummy = 0.0F; float hsize; hsize = Size*0.5F; //上下移動成分をチェック { //左下 if (MapHitCheck(*X - hsize, *Y + hsize, &Du...
by keito940
8年前
フォーラム: C言語何でも質問掲示板
トピック: キャラが壁にハマってしまう
返信数: 75
閲覧数: 35278

Re: キャラが壁にハマってしまう

左右と上下の判定を分けず、めり込んだ位置で上下の判定をしてしまうと、めり込んだ途端ぴょんと垂直に弾かれるような現象が発生したりします。 No.21に書かれていることはそのようなことではないでしょうか。 言われてみれば… シンプルであるべきと書いたのは、考え方や手順についてです。 キャラが移動して壁にめり込むのを補正するのではなく、ただ壁にめり込んでいるのを補正するだけでいいんです。 1. まず左右にめり込んでいるか判定して、すぐに補正する 2. 次に上下にめり込んでいるか判定して、すぐに補正する 3. 最後に地面に接しているか判定して、地面に立っているかどうかフラグを設定する という方法がも...
by keito940
8年前
フォーラム: C言語何でも質問掲示板
トピック: キャラが壁にハマってしまう
返信数: 75
閲覧数: 35278

Re: キャラが壁にハマってしまう

え~、左右の当たり判定がうまくいかない原因がようやくわかりました。どうやら当たり判定チェックか、マップの当たり判定のどちらかの不具合であって、 地面や上のブロックの分も勝手に補正してしまうことにあるようです。当たり判定チェックとマップの当たり判定のどの部分をいじれば、X座標だけを補正できるのでしょうか?その回答をお待ちしています。 //マップの当たり判定 int MapHitCheck(float X, float Y, float *MoveX, float *MoveY) { float afX, afY; afX = X + *MoveX; afY = Y + *MoveY; if (G...
by keito940
8年前
フォーラム: C言語何でも質問掲示板
トピック: キャラが壁にハマってしまう
返信数: 75
閲覧数: 35278

Re: キャラが壁にハマってしまう

usaoさんに言われて、 ようやく デバッグしてみてわかったことなんですが、着地したときに一瞬だけ埋もれてしまうのは着地のときに一瞬だけY座標が地面へ行ってしまうことにあるんですね…。 で、本題になるのですが、どうやら壁に衝突すると、空中に浮いてしまうのは、原因は壁に衝突するときに、X座標が移動するのと同時に、Y座標も同時に動いてしまうことにあるようです。どうしたら、Y座標を動かさずに壁に衝突できるのでしょうか…。 #include "dxlib.h" #define SCREEN_WIDTH (320) #define SCREEN_HEIGHT (240) #define STAGE_WI...
by keito940
8年前
フォーラム: C言語何でも質問掲示板
トピック: キャラが壁にハマってしまう
返信数: 75
閲覧数: 35278

Re: キャラが壁にハマってしまう

書きました → 変な動きをしてます → どうすればいいでしょうか 問題が起こった際,ざっくりと以下の2ステップ  (1)どうしてそうなってしまうのか原因を究明する  (2)問題を解消する方法を考える が必要になるのだとして… あなたはそのどちらの作業をも他人に投げているように見える. (1)の側すらご自身で行わない理由があるのでしょうか? そんなことはない,自身でもデバッグしている,ということであれば, 問題点を"見た目の現象"として曖昧に書いて丸投げ的に質問するよりも デバッグ作業の結果得られている知見を書く等した方が 良い{欲しい,有用な,ピンポイントな,…}回答を得られやすいのではない...
by keito940
8年前
フォーラム: C言語何でも質問掲示板
トピック: キャラが壁にハマってしまう
返信数: 75
閲覧数: 35278

Re: キャラが壁にハマってしまう

No: 1のコードの148行目 NO: 11のコードの148行目にも同様のif文の中での代入処理がありますね。 言われてみればそうですね…。代入処理を修正したコードを貼っときます。 #include "dxlib.h" #define SCREEN_WIDTH (320) #define SCREEN_HEIGHT (240) #define STAGE_WIDTH (320) #define STAGE_HEIGHT (240) #define CHIP_SIZE (16) #define MAP_WIDTH (STAGE_WIDTH/CHIP_SIZE) #define MAP_HEIG...
by keito940
8年前
フォーラム: C言語何でも質問掲示板
トピック: キャラが壁にハマってしまう
返信数: 75
閲覧数: 35278

Re: キャラが壁にハマってしまう

そんな皆さんの声援を受け、頑張って自力で壁衝突の処理を作りました。でも、壁に衝突するとキャラが空中浮遊をしたり、何回か壁に移動すると壁にやはりはまってしまいます。そして壁に移動しようとするとブルブル震えてしまいます。(今気づいたことなのですが)しかも、着地すると一瞬だけ埋まって、何事もなかったかのように地面に上がってしまいます。どうすればいいのでしょうか? #include "dxlib.h" #define SCREEN_WIDTH (320) #define SCREEN_HEIGHT (240) #define STAGE_WIDTH (320) #define STAGE_HEIGHT...
by keito940
8年前
フォーラム: C言語何でも質問掲示板
トピック: キャラが壁にハマってしまう
返信数: 75
閲覧数: 35278

Re: キャラが壁にハマってしまう

みけCAT さんが書きました:No: 1のコードの148行目
keito940 さんが書きました:

コード:

		//もし足場に着地したら埋まりこみを防止してからジャンプ回数をリセットする
		else if (*HitFlagY = TRUE) {
において、if文の中で比較ではなく代入を行い、条件式が常に真になっています。
これは意図した仕様ですか?
そういえばそうかもしれませんが、今書いているコードではそれは使っていません。
by keito940
8年前
フォーラム: C言語何でも質問掲示板
トピック: キャラが壁にハマってしまう
返信数: 75
閲覧数: 35278

Re: キャラが壁にハマってしまう

あたり判定に条件を加えるのはよろしくない。 押し戻したあともめり込んでいる状態が解消されないと移動できなくなるから。 そういう質問だからそういう理由で起きてるのだろうと予測してコードを読んでみる。 なるほど、めり込み判定をなんとかしろというわけですか。そういや、そうかもしれませんね…。 壁に当たってるときに押し戻す量が1.0f固定になってる。 これは圧倒的に足りていないのではないだろうか。 そこを直しても、浮動小数点数だから、計算上は足りてても誤差でハマる可能性が残る。 まずは、めり込んでいる状態を解決してくださいと。 ということは、直前の移動フレームを実装すればいいわけですね。 どうして今...
by keito940
8年前
フォーラム: C言語何でも質問掲示板
トピック: キャラが壁にハマってしまう
返信数: 75
閲覧数: 35278

Re: キャラが壁にハマってしまう

これでも単純にしたつもりなんですけどね…。やっぱり僕のコードは難しいですか…。 とにかく、めり込み防止のアルゴリズムは以下のとおりです。どうすれば僕の想定した動作になるのかを教えて下さい。 { if(壁にヒットしたら) 衝突フラグをオンにする } if(衝突フラグがオンで){ if(左に移動していたら){ めり込み防止のために右に返してから 衝突フラグをオフにする } else if(右に移動していたら){         めり込み防止のために左に返してから         衝突フラグをオフにする }
by keito940
8年前
フォーラム: C言語何でも質問掲示板
トピック: キャラが壁にハマってしまう
返信数: 75
閲覧数: 35278

Re: キャラが壁にハマってしまう

Math さんが書きました:プログラムが整理されてなくて分からない。問題点を絞って半分以下にしないと他人には理解不能だしコメントがすくなすぎます。
自分で整理整頓したつもりなのですが…。やっぱ整理されてなかったんですか…。
Math さんが書きました:作った自分がわからなくなっているのだから参考にしたサイトを提示して下さい。(2つが混ざっている様なきがする)
http://hsp.tv/play/pforum.php?mode=all&num=58323
http://freestyle.nvo.jp/archives/1121
この2つだと思います。
追記:NO1のコメントを多くしてみました。
by keito940
8年前
フォーラム: C言語何でも質問掲示板
トピック: code::blocks(MinGW)でのDXライブラリの使い方について
返信数: 8
閲覧数: 4230

Re: code::blocks(MinGW)でのDXライブラリの使い方について

ほほう、MinGWでDXライブラリを使うときは、バージョンを下げろ、か…。
by keito940
8年前
フォーラム: C言語何でも質問掲示板
トピック: キャラが壁にハマってしまう
返信数: 75
閲覧数: 35278

キャラが壁にハマってしまう

前回、ジャンプがうまくいかない件で質問したものです。今度は壁にぶつかると壁にハマって、動けなくなってしまいます。どうやら、(自分では実装したつもりなのですが)左右の衝突判定がうまく実装されていないことに原因にあるようです。コードは以下のとおりです。(画像は自分で用意してくださいね) ちなみに、前回での質問における2ドット浮くという現象は解決済みです。また、地上の衝突判定自体は完成しています。 #include "dxlib.h" #define SCREEN_WIDTH (320) #define SCREEN_HEIGHT (240) #define STAGE_WIDTH (320) #d...
by keito940
8年前
フォーラム: C言語何でも質問掲示板
トピック: 移動とジャンプが上手く行きません。
返信数: 19
閲覧数: 9663

Re: 移動とジャンプが上手く行きません。

ということは解決ってことでいいですよね?
by keito940
8年前
フォーラム: C言語何でも質問掲示板
トピック: 移動とジャンプが上手く行きません。
返信数: 19
閲覧数: 9663

Re: 移動とジャンプが上手く行きません。

一応、これで解決なのですが、どうしても、キャラが2ドット浮いてしまいます。地面にしっかり着地していないとアクションゲームにはなりません。その上二段ジャンプも設計しているので、必然的に何か動き回りすぎると地面に埋まってしまいます。また、壁にぶつかるとそこにも埋まってしまいます。どうすればいいのでしょうか? #include "dxlib.h" #define SCREEN_WIDTH (320) #define SCREEN_HEIGHT (240) #define CHIP_SIZE (16) #define MAP_WIDTH (SCREEN_WIDTH/CHIP_SIZE) #define...
by keito940
8年前
フォーラム: C言語何でも質問掲示板
トピック: 移動とジャンプが上手く行きません。
返信数: 19
閲覧数: 9663

Re: 移動とジャンプが上手く行きません。

NO.9のソースコードを見ましたが、NO.1のソースコードに戻っていないように思われます。 http://difff.jp/ こちらのサイトでNO.9のコードと、NO.1のコードを比較しましたが、8行目と、126行目以外の行が書き換わっていました。具体的には、 82行目の *MoveY = bby - Y - 1.0F; が、 *MoveY = bby - Y + 1.0F; に書き換わっていたり、110行目の if (MapHitCheck(*X - hsize, *Y - hsize, &Dummy, &MoveY) == 4) *DropPower = -1.0F; が、 if (Ma...
by keito940
8年前
フォーラム: C言語何でも質問掲示板
トピック: 移動とジャンプが上手く行きません。
返信数: 19
閲覧数: 9663

Re: 移動とジャンプが上手く行きません。

if (GetChipParam(*X - Size*0.5F, *Y + Size*0.5F+1.0F)==0 && (*X + Size*0.5F, *Y + Size*0.5F+1.0F)==0){ } これの && の右側部分が,不幸にも(?)カンマ演算子がどうのという形として解釈されてコンパイルが通ってしまっているけども, 本当にやりたいことを書いた状態にするには >・126行目の、 >if (GetChipParam(*X - Size*0.5F, *Y + Size*0.5F) && (*X + Size*0.5, *Y + Size*0.5F)) { >これを、 >if (G...
by keito940
8年前
フォーラム: C言語何でも質問掲示板
トピック: 移動とジャンプが上手く行きません。
返信数: 19
閲覧数: 9663

Re: 移動とジャンプが上手く行きません。

みけCAT さんが書きました: まだコンマ演算子の左辺、*X + Size*0.5Fを投げ捨てるコードのままですね。
なるほど、当たり判定チェックにおかしい部分があるわけですね。
なお、コンマ演算子については自分で調べてみたので、なんとなくわかったんですが、具体的にどういうことか、コード付きで教えてください。
追記:ちなみに先程の書き込みは削除しました。質問の仕方が悪かったですね…。
by keito940
8年前
フォーラム: C言語何でも質問掲示板
トピック: dxlibの設定を毎回行わなければならない
返信数: 2
閲覧数: 1534

Re: dxlibの設定を毎回行わなければならない

その件は、DXライブラリ用のテンプレートでも作れば解決できると思います。
詳しくはhttp://kiyokura.hateblo.jp/entry/20121218/p1を見てください。
2012のものを使っているのですが、2015でも、通用すると思いますよ。
by keito940
8年前
フォーラム: C言語何でも質問掲示板
トピック: 移動とジャンプが上手く行きません。
返信数: 19
閲覧数: 9663

Re: 移動とジャンプが上手く行きません。

>>keito940さん あれ、おかしいですね。こちらではジャンプ後も正常に移動出来ましたし、ジャンプの回数は最大で2回までしか出来ませんでしたよ。 NO.1のソースコード(最初に提示したコード)の方に戻してから、8行目と126行目を修正しましたか?そうすれば大丈夫なはずなのですが。 もし、そうしたのであれば、またソースコードを見せて頂きたいです。 実は、最初のコードに戻していなかったことに気づいて、戻してみて今言われたことをやってみましたが、やはりジャンプがどこまでも飛んでいってしまいます。 コードを貼り付けますので、どこが悪いのか教えてくれませんか? #include "dxlib.h"...
by keito940
8年前
フォーラム: C言語何でも質問掲示板
トピック: 移動とジャンプが上手く行きません。
返信数: 19
閲覧数: 9663

Re: 移動とジャンプが上手く行きません。

>>みけCATさん 以下のように修正すると、動くようになると思います。 ・8行目のPlayerYの初期化子を、「216.0F」ではなく、「214.0F」にする。 ・126行目の、 if (GetChipParam(*X - Size*0.5F, *Y + Size*0.5F) && (*X + Size*0.5, *Y + Size*0.5F)) { これを、 if (GetChipParam(*X - Size*0.5F, *Y + Size*0.5F + 1.0f) == 0 && GetChipParam(*X + Size*0.5F, *Y + Size*0.5F + 1.0f) =...

詳細検索ページへ移動する