検索結果 264 件

by keito94
2年前
フォーラム: C言語何でも質問掲示板
トピック: 坂道の当たり判定を作っています。
返信数: 122
閲覧数: 26608

Re: 坂道の当たり判定を作っています。

ISLe さんが書きました: 場所はCCollision::CheckMapで合ってると書いたのに。
ごめんなさい…やっぱりあってたんですね…
ISLe さんが書きました: 前提から外れたことを同じやり方でやろうとしたらどうなりますかね。
そりゃ、バグが発生するわけですね…。
by keito94
2年前
フォーラム: C言語何でも質問掲示板
トピック: 坂道の当たり判定を作っています。
返信数: 122
閲覧数: 26608

Re: 坂道の当たり判定を作っています。

ISLe さんが書きました: “坂道を実装するには邪魔になりそうな前提条件”は、たぶんkeito94さんが完璧だと思っているところ、にありますよ。
もしかしてめり込み防止の部分ですか?
by keito94
2年前
フォーラム: C言語何でも質問掲示板
トピック: 坂道の当たり判定を作っています。
返信数: 122
閲覧数: 26608

Re: 坂道の当たり判定を作っています。

ISLe さんが書きました: 分かっているなら、どこがどうして問題なのか、説明して見せてください。
その問題というのは、CheckMapや、マップチップを確認する部分にあります。
ブロックを左から何個目にあるかを判定する都合上、動いているブロックやキャラのX座標の位置がずれることが前提の上下の当たり判定で、
(今のコードでは)左へ上へ行ってしまうバグが起きてしまうことです。
by keito94
2年前
フォーラム: C言語何でも質問掲示板
トピック: 坂道の当たり判定を作っています。
返信数: 122
閲覧数: 26608

Re: 坂道の当たり判定を作っています。

ISLe さんが書きました: むしろ、坂道を実装するには邪魔になりそうな前提条件は排除していきたいが。
どうやって排除するのですか?
by keito94
2年前
フォーラム: C言語何でも質問掲示板
トピック: 坂道の当たり判定を作っています。
返信数: 122
閲覧数: 26608

Re: 坂道の当たり判定を作っています。

ブロックの座標で当たり判定を実装しようとしています。
現在考えているのは、衝突したら一ブロックずらした座標で判定するということです。
(キャラの座標が中央基準なので…。)
ですが、地上に着地せずにめり込んで左に移動してしまいます。
左右の判定は一応完成しました。
by keito94
2年前
フォーラム: C言語何でも質問掲示板
トピック: 坂道の当たり判定を作っています。
返信数: 122
閲覧数: 26608

Re: 坂道の当たり判定を作っています。

ISLeさんのご指摘を受けて、ブロックの単位ではなく、座標で判定して見るようにしてみました。
でも、また新たなバグが発生してしまいました…。
実行すると、着地せずに画面外に落下します。
by keito94
2年前
フォーラム: C言語何でも質問掲示板
トピック: 坂道の当たり判定を作っています。
返信数: 122
閲覧数: 26608

Re: 坂道の当たり判定を作っています。

すいませんでした…。
正確には当たり判定のコード自体は完成していたのですが、
なかなか理想通りの動きになりません…。
どうしたら、理想通りの動き(地上にいるときだけGroundFlagがtrueになったまま)になるのでしょうか?
by keito94
2年前
フォーラム: C言語何でも質問掲示板
トピック: 坂道の当たり判定を作っています。
返信数: 122
閲覧数: 26608

Re: 坂道の当たり判定を作っています。

ISLe さんが書きました: 正に舌の根の乾かぬうちにってやつですね。
そうです…。
ISLe さんが書きました: CPlayer::Moveから除けたいのは、あたり判定(を直接呼び出している)部分。
もしかしてこうではないのでしょうか?
ISLe さんが書きました: 現状、座標補正によって、当たり判定の範囲外に移動するため、フレームごとにCPlayer::GroundFlagのオン/オフが繰り返される状況。
キャラの足元にブロックがあるあいだ、CPlayer::GroundFlagがオンのまま維持されて欲しい。
たしかにそれは言えている…。

たしかにそうなんですよね…。
by keito94
2年前
フォーラム: C言語何でも質問掲示板
トピック: 坂道の当たり判定を作っています。
返信数: 122
閲覧数: 26608

Re: 坂道の当たり判定を作っています。

ISLe さんが書きました: タイルのサイズは16ピクセルであるのに、-8~8という範囲(=17ピクセル)を使って重要な判定をしている。
今の発言を受けて、当たり判定のサイズを変更してみました。
by keito94
2年前
フォーラム: C言語何でも質問掲示板
トピック: 坂道の当たり判定を作っています。
返信数: 122
閲覧数: 26608

Re: 坂道の当たり判定を作っています。

ごめんなさい、座標をずらす部分をむやみにいじってしまいました…
No.81の当たり判定のアルゴリズムの左右の当たり判定の部分は完成したのですが、
上下の当たり判定で、めり込んで左の壁まで行ってしまいます。
後、重力の部分を分割してみました。
by keito94
2年前
フォーラム: C言語何でも質問掲示板
トピック: 坂道の当たり判定を作っています。
返信数: 122
閲覧数: 26608

Re: 坂道の当たり判定を作っています。

とりあえず、No.81で言われた方法にしてみました。
現在確認されているバグは、
  • 着地すると、キャラがぴょんぴょん跳ねる。
  • 左の壁に衝突すると、キャラが上に上がる。
となります。
壁に当たった時、キャラをずらすアルゴリズムの例を上げてくれますか。
by keito94
3年前
フォーラム: C言語何でも質問掲示板
トピック: 坂道の当たり判定を作っています。
返信数: 122
閲覧数: 26608

Re: 坂道の当たり判定を作っています。

ISLe さんが書きました: キャラが地面にめり込むと地面に触れないぎりぎりの位置に座標補正されます。
次のフレームで、それは地上に立っていることになるのでしょうか。
なん…だと…。地上にいるというのは振る舞いだけだったのか…。
ISLe さんが書きました: 前に一度CCollision::GetMoveからも取り除かれたのに、今は復活してますね。
今度こそ取り除かれたのではないのでしょうか?
by keito94
3年前
フォーラム: C言語何でも質問掲示板
トピック: 坂道の当たり判定を作っています。
返信数: 122
閲覧数: 26608

Re: 坂道の当たり判定を作っています。

ちなみに、これが現在のコードです。
現在は移動量に依存していた部分を取り除いたところです。実行しても、落下状態にあるので、めり込んでしまいます。
CPlayer::GroundFlagはそれが真になっていると、地上にいるかのように振る舞うフラグです。(混乱を招く回答すいません…。)
by keito94
3年前
フォーラム: C言語何でも質問掲示板
トピック: 坂道の当たり判定を作っています。
返信数: 122
閲覧数: 26608

Re: 坂道の当たり判定を作っています。

ISLe さんが書きました: 移動量撤廃の方針を続けるならこのトピで続ければよいのでは。
ごめんなさい、解決を撤回させてください。この方針を続けようと思います。
by keito94
3年前
フォーラム: C言語何でも質問掲示板
トピック: 坂道の当たり判定を作っています。
返信数: 122
閲覧数: 26608

Re: 坂道の当たり判定を作っています。

オフトピック
とんでもない勘違いをしてしまった…。
by keito94
3年前
フォーラム: C言語何でも質問掲示板
トピック: 坂道の当たり判定を作っています。
返信数: 122
閲覧数: 26608

Re: 坂道の当たり判定を作っています。

解決させたのは撤回させてください。
移動量撤廃を続けたいと思います。
by keito94
3年前
フォーラム: C言語何でも質問掲示板
トピック: 坂道の当たり判定を作っています。
返信数: 122
閲覧数: 26608

Re: 坂道の当たり判定を作っています。

http://dixq.net/forum/viewtopic.php?f=3&t=19267
一からトピックをやり直してみました。
これ以降のめり込みなどに関する質問はここに書き込んでください。
この件は一応解決とさせていただきます。
by keito94
3年前
フォーラム: C言語何でも質問掲示板
トピック: 坂道の当たり判定を作っています。
返信数: 122
閲覧数: 26608

Re: 坂道の当たり判定を作っています。

ISLe さんが書きました: コードを上から下になぞるだけでなく、実際に動いているときの流れを意識してください。
はーい、わかりました。
by keito94
3年前
フォーラム: C言語何でも質問掲示板
トピック: 移動量を使わないめり込み防止について。
返信数: 1
閲覧数: 488

移動量を使わないめり込み防止について。

色々とお騒がせしてすいません。 http://dixq.net/forum/viewtopic.php?f=3&t=19205でISLeさんがトピックをやり直せと言ったので、 このトピックでやりたいと思います。 Collision.cppの移動量に依存していた部分を排除したまでは良かったのですが、めり込み防止の部分は未完成なので、移動できずに右へキャラが言ってしまいます。そこで、移動量を使わないめり込み防止の方法を教えて下さい。 コードについてですが、サンプルコード.zipをプロジェクトに加えるだけでOKです。 ちなみにCPlayer::GroundFlagは地上にいると振る舞うかどうかを確認...
by keito94
3年前
フォーラム: C言語何でも質問掲示板
トピック: 坂道の当たり判定を作っています。
返信数: 122
閲覧数: 26608

Re: 坂道の当たり判定を作っています。

ISLe さんが書きました: #むしろ無限ループを楽しんでください。
それはやだやだ!!!
ISLe さんが書きました: 移動量を使わないでどうやって判定するのか?といういちばんのキモを質問しないのですね。
やっとここまで問題点をピンポイントであぶり出せたのに。
ごめんなさい、その質問をしようと思っていたところでした…。
ISLe さんが書きました: 間違った理解でコードをいじるからおかしなことになるのと違いますか。
ごめんなさい、ちゃんとソースコードをしっかり読んでからやりたいと思います…。
by keito94
3年前
フォーラム: C言語何でも質問掲示板
トピック: 坂道の当たり判定を作っています。
返信数: 122
閲覧数: 26608

Re: 坂道の当たり判定を作っています。

新たなバグを発見しました。地上にいる時は、Y座標の移動量を0にしようとしているつもりなのですが、
ブレークポイント無しで実行するとソースコードに書いてあるバグが発生して、地面にめり込んだ状態になります。
原因はどこにあるのでしょうか?また仕込んだのではないのでしょうか?
by keito94
3年前
フォーラム: C言語何でも質問掲示板
トピック: 坂道の当たり判定を作っています。
返信数: 122
閲覧数: 26608

Re: 坂道の当たり判定を作っています。

>>ISLeさん 簡単に説明します。 CCollisionと言うのは当たり判定の処理を行うクラスです。 CPlayer::GroundFlagと言うのは、キャラが地上に居るかどうかを管理する変数です。 CPlayerで移動処理をして、CCollisionで当たり判定をチェックします。 ジャンプした、もしくは空中にいる時はGroundFlagが偽になります。 地上にいる時はGroundFlagが真になります。 GroundFlagが真になっている時は落下を行わないはずです。 これで間違いないですよね? あと、質問用のソースコードをリポジトリに上げてみました。 プロジェクトにこのコードを追加してく...
by keito94
3年前
フォーラム: C言語何でも質問掲示板
トピック: 坂道の当たり判定を作っています。
返信数: 122
閲覧数: 26608

Re: 坂道の当たり判定を作っています。

ISLe さんが書きました: (プレイヤーキャラ自身が)落下する状態でないから落下しない
それを自分なりに実装してみたのですが、今度はキャラが落下しません。
ジャンプすらできません。何か落下する状態を管理する部分にバグが有るようなのですがそれはどこなのでしょうか?
オフトピック
やっぱりプログラムって大変…。
by keito94
3年前
フォーラム: C言語何でも質問掲示板
トピック: 坂道の当たり判定を作っています。
返信数: 122
閲覧数: 26608

Re: 坂道の当たり判定を作っています。

オフトピック
やっぱり自分でプログラムするのっていいもんなんだな…。
by keito94
3年前
フォーラム: C言語何でも質問掲示板
トピック: 初めまして。WinMainのことで訪ねたいことがあります。
返信数: 14
閲覧数: 1414

Re: 初めまして。WinMainのことで訪ねたいことがあります。

もしかして、こうではないのでしょうか?

コード:

#include "DxLib.h"

int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow ){
        DxLib_Init();   // DXライブラリ初期化処理
        WaitKey();      // キー入力待ち
        DxLib_End();    // DXライブラリ終了処理
        return 0;
}
by keito94
3年前
フォーラム: C言語何でも質問掲示板
トピック: 坂道の当たり判定を作っています。
返信数: 122
閲覧数: 26608

Re: 坂道の当たり判定を作っています。

僕の頭の中のコードでは、どう頑張っても、めり込み補正の部分とY座標の部分で移動量に頼ってしまいます。
なので、移動量に頼らないめり込み防止のサンプルコードをください。
なお、今上げたコードでは、常に落下しているので、最終的にはキャラが画面外に移動します。
by keito94
3年前
フォーラム: C言語何でも質問掲示板
トピック: 坂道の当たり判定を作っています。
返信数: 122
閲覧数: 26608

Re: 坂道の当たり判定を作っています。

ISLeさんが考えている当たり判定のアルゴリズムに変えてみました。
addxとaddyを0にしないとまともに動作しません。(このステージでは関係ないんですが…。)
オフトピック
なるほど、こうゆうことだったのか…。
by keito94
3年前
フォーラム: C言語何でも質問掲示板
トピック: 坂道の当たり判定を作っています。
返信数: 122
閲覧数: 26608

Re: 坂道の当たり判定を作っています。

オフトピック
今の修正で、坂道の壁としての当たり判定も楽にできるかなって…。
今思うとはじめのコードは汚い上に、なんか変な要素満載だったな…。
早くに気づいていれば、良かったなと思うこの頃。
by keito94
3年前
フォーラム: C言語何でも質問掲示板
トピック: 坂道の当たり判定を作っています。
返信数: 122
閲覧数: 26608

Re: 坂道の当たり判定を作っています。

ISLeさん、ご指摘ありがとうございます。
出力する引数は、ポインタをつけろというわけですね…。
あと、入れ子化していた部分を修正しました。
by keito94
3年前
フォーラム: C言語何でも質問掲示板
トピック: 坂道の当たり判定を作っています。
返信数: 122
閲覧数: 26608

Re: 坂道の当たり判定を作っています。

ISLeさんが指摘した、移動先座標での判定の部分を、移動量を足した判定に変更してみました。
CheckMapの部分は、addxかaddyのどちらかが、0でなければ正しく動作しない仕様となってます。
by keito94
3年前
フォーラム: C言語何でも質問掲示板
トピック: 坂道の当たり判定を作っています。
返信数: 122
閲覧数: 26608

Re: 坂道の当たり判定を作っています。

もしかして、こうではないのでしょうか?
CheckSlopeの部分で座標と移動量を参照しておくように変更しました。
by keito94
3年前
フォーラム: C言語何でも質問掲示板
トピック: 坂道の当たり判定を作っています。
返信数: 122
閲覧数: 26608

Re: 坂道の当たり判定を作っています。

No.57のアルゴリズムをもとにしたソースをCollision.zipに添付します。
追記:http://dixq.net/forum/blog.php?u=900&b=6581でISLeさんに指摘されたので、ColSegmentを分離しました。
by keito94
3年前
フォーラム: C言語何でも質問掲示板
トピック: 坂道の当たり判定を作っています。
返信数: 122
閲覧数: 26608

Re: 坂道の当たり判定を作っています。

ごめんなさい、わかりにくかったですね…。 ①プレイヤーが坂道のところに来たら、坂道のパラメーターを設定します。(坂道の線分を設定する。) ②坂道のパラメーターをもとにプレイヤーのパラメーターを設定します。 (具体的にはSlopeCondというパラメーターで、坂道か天井か、(右方向から見て)上りか下りかをもとにプレイヤーの線分を設定する。) ③プレイヤーの足元の点(プレイヤーの線分の終点が、)が、坂道の開始地点と終了地点の間にいたら(坂道の線分の間にいれば)、プレイヤーの線分と坂道の線分で当たり判定を行います。 ④プレイヤーが坂道のところを離れたら、坂道の当たり判定を終了して、四角形の床の当たり...
by keito94
3年前
フォーラム: C言語何でも質問掲示板
トピック: 坂道の当たり判定を作っています。
返信数: 122
閲覧数: 26608

Re: 坂道の当たり判定を作っています。

あと、なんとかスパゲッティコードを解消させてみました…。
Collision.cppのGetMoveを見ればわかると思いますが、坂道にプレイヤーが居るのなら、ブロックとしての当たり判定を中断させ、坂道の当たり判定へ移行します。また、GetSlopeでdefaultのところへ来たらそれはブロックとして判定します。昇り降りは、まだ作っておりません。これから質問の答を参照して作りたいと思います。
by keito94
3年前
フォーラム: C言語何でも質問掲示板
トピック: 坂道の当たり判定を作っています。
返信数: 122
閲覧数: 26608

Re: 坂道の当たり判定を作っています。

ログインしたユーザーしか見ることができない場所に書かれた他人の文章を、ログインせず誰でも見ることができる場所に張り付ける行為。非常識ではないですか? すいません、ソースをはっきりさせたいと思います…。 http://dixq.net/forum/blog.php?u=900&b=6581のusaoさんの投稿で、アルゴリズムの説明がなされてないと指摘されてたので答えたいと思います。 ①坂道として判定されたら、坂道の線分を生成する。 ②プレイヤーの線分を生成する。 ③プレイヤーの線分の終点が、坂道の線分の間であれば、プレイヤーの線分と坂道の線分で線分の当たり判定を行う。 ④線分と線分が交差してい...
by keito94
3年前
フォーラム: C言語何でも質問掲示板
トピック: GetNowCount()で取得した数値を時分秒で表示したい
返信数: 6
閲覧数: 1222

Re: GetNowCount()で取得した数値を時分秒で表示したい

そうそう、そういう感じです!!
オフトピック
ゲームづくりの参考にしよう、…っと。
by keito94
3年前
フォーラム: C言語何でも質問掲示板
トピック: 坂道の当たり判定を作っています。
返信数: 122
閲覧数: 26608

Re: 坂道の当たり判定を作っています。

ISLeさん、言い方が悪かったみたいですね…。
今書いているコードがスパゲッティコードになってるのは認めます。
しかし、どうしても、坂道の当たり判定が、今のしか考えられないので、
あなたが考えている方の当たり判定のサンプルコードを提示してください。
by keito94
3年前
フォーラム: C言語何でも質問掲示板
トピック: 坂道の当たり判定を作っています。
返信数: 122
閲覧数: 26608

Re: 坂道の当たり判定を作っています。

http://dixq.net/fourm/blog.php?u=900&b=6581より
ISLe さんが書きました:そんな基本的なところに気付けないくらいにコードが複雑化している現状がある。
わたしはそれを解決するのが急務だと考えた。
ええっ!?スパゲッティーコードだったんですか今書いていたコード!?
そりゃ解決されないわけだ…。
ISLe さんが書きました: keito94さんはさっさと坂道を実装して終わらせたいと考えている。
であればかみ合うはずがないっすね。
ほんとそれですよ…。今となってはそりゃそうなっちゃうよな…。と反省しています…。

追記:ソース元を出しました。
by keito94
3年前
フォーラム: C言語何でも質問掲示板
トピック: GetNowCount()で取得した数値を時分秒で表示したい
返信数: 6
閲覧数: 1222

Re: GetNowCount()で取得した数値を時分秒で表示したい

ごめんなさい、質問の意味を間違えてしまいました。
hour,minute,secondは、int型だと思います…。
オフトピック
へにっくすさん、ご指摘ありがとうございます…。
by keito94
3年前
フォーラム: C言語何でも質問掲示板
トピック: GetNowCount()で取得した数値を時分秒で表示したい
返信数: 6
閲覧数: 1222

Re: GetNowCount()で取得した数値を時分秒で表示したい

hourは時間、minuteは分、secondは秒だと思います。
追記:しまった、そういうことではないのか…。
by keito94
3年前
フォーラム: C言語何でも質問掲示板
トピック: 龍神録プログラミングの館 第4章 構造体の初期化
返信数: 3
閲覧数: 647

Re: 龍神録プログラミングの館 第4章 構造体の初期化

基本的には、構造体は初期化しておいたほうがいいですよ~。
構造体も変数の集まりなので、初期化しておかないと行けないんです。
by keito94
3年前
フォーラム: C言語何でも質問掲示板
トピック: 坂道の当たり判定を作っています。
返信数: 122
閲覧数: 26608

Re: 坂道の当たり判定を作っています。

わたしの書いた文章をちゃんと読みましたか。 文字をなぞるだけでなく、意味を理解しましたか。 すいません。さっきの発言はなかったことにしてください…。 軽率かつ思い込みでした…。 あの時はつい、Collision.cppは変える必要ないのかと…。 > 理解する気がないと思われるところに、説明を補完する役割としてのサンプルコードを提示する意義を感じませんし、そういうサンプルコードはお望みでありませんよね。 そうですよね…。 というわけで、あなたが考えている方の当たり判定のサンプルコードを出してください。 ようやくあなたの発言の意味が飲み込めましたので…。 今となってはあの書き込み、反省しているよ...
by keito94
3年前
フォーラム: C言語何でも質問掲示板
トピック: 坂道の当たり判定を作っています。
返信数: 122
閲覧数: 26608

Re: 坂道の当たり判定を作っています。

ISLe さんが書きました: わたしが違う方法を使うというだけで、間違っているとは言っておりません。
ますますわけがわからなくなってしまいました…。(あれで完璧だったつもりなのに…。)
では、あなたが考えてるやり方のほうのサンプルコードを出してください!!
それをもとにして、Collision.cppをプログラムしますから!!
by keito94
3年前
フォーラム: C言語何でも質問掲示板
トピック: 坂道の当たり判定を作っています。
返信数: 122
閲覧数: 26608

Re: 坂道の当たり判定を作っています。

そうか、Collision.cppの当たり判定は間違っていたのか…。
今の言葉でちょっと頭が混乱してしまったので、坂道移動のサンプルコードをくれませんか?
それをもとにソースコードを変更したいと思うので…。
by keito94
3年前
フォーラム: C言語何でも質問掲示板
トピック: 坂道の当たり判定を作っています。
返信数: 122
閲覧数: 26608

Re: 坂道の当たり判定を作っています。

ISLeさん、ライブラリの欠点のご指摘ありがとうございます!!
少し変更したのをGithubにあげようと思います!!
これが坂道の当たり判定に関係するわけですよね?
修正済みのVector2.cppを使ったサンプルコードをください!!
by keito94
3年前
フォーラム: C言語何でも質問掲示板
トピック: 坂道の当たり判定を作っています。
返信数: 122
閲覧数: 26608

Re: 坂道の当たり判定を作っています。

Y座標を坂道に合わせて移動させるというのはわかったけど…。坂道移動のアルゴリズムがちょっとよくわからないなぁ…。 お手数ですが、Collision.cppに書かれてある当たり判定のアルゴリズムを残したままでいいので、坂道移動のサンプルコードをくれませんか? コメントにも書かれてあるように線分の衝突の部分判定のチェックの部分に間違いとかあるのかな…。 ついでにちょっと調べてくれませんか?(以下のように修正してください。) Vector2 CCollision::CheckSlope(int x, int y, Segment& Slope, int layernum,int slopecond,...
by keito94
3年前
フォーラム: C言語何でも質問掲示板
トピック: 坂道の当たり判定を作っています。
返信数: 122
閲覧数: 26608

Re: 坂道の当たり判定を作っています。

myyと言うのはキャラクターの座標です。
addyと言うのは、キャラクターの移動量です。
あと、purinさんのご指摘に従い、Collision.cppを少し修正してみました。(中身に変わりはありません。)
49行目の件はちょっと誤算でしたね…。
オフトピック
ええっ!?Y座標を坂道に合わせて動かせばいいんですか!?
ちょっと甘かったです…。
by keito94
3年前
フォーラム: C言語何でも質問掲示板
トピック: 坂道の当たり判定を作っています。
返信数: 122
閲覧数: 26608

Re: 坂道の当たり判定を作っています。

purinさんに言われてマジックナンバーを駆逐し、コメントによる解説を加えたソースを作りました。
引き続き、Scene.cppとScene.h以外をプロジェクトに入れてください。
オフトピック
コメントをたくさん書く…
ボクはそれに賛成ですね。
by keito94
3年前
フォーラム: C言語何でも質問掲示板
トピック: 坂道の当たり判定を作っています。
返信数: 122
閲覧数: 26608

Re: 坂道の当たり判定を作っています。

ブログなどでみなさんがそこまで言うのなら、ソースコードを公開しますので、
サンプルコード.zipのScene.cppとScene.h以外のソースコードをプロジェクトに追加してください。
ブログで聞いた話によると、今のソースコードは色々と改善すべきところがあると思うので、ここで改善案を出していただければ、
それを修正すると思います。
by keito94
3年前
フォーラム: C言語何でも質問掲示板
トピック: 坂道の当たり判定を作っています。
返信数: 122
閲覧数: 26608

Re: 坂道の当たり判定を作っています。

あの、ブログ見ましたけど…。
移動後の座標ではなく、現在の座標だったのですか!?
ボクも気づきませんでした…。
すいませんが、現在の座標ベースでの当たり判定のアルゴリズムを教えてくれませんか?
by keito94
3年前
フォーラム: C言語何でも質問掲示板
トピック: 坂道の当たり判定を作っています。
返信数: 122
閲覧数: 26608

Re: 坂道の当たり判定を作っています。

違います違います!!
ColSegment自体は正しく動作しています!!
そして、修正が一つ…。
最初のプログラムの177行の部分を、

コード:

POINT slope = CheckSlope((int)*myx, (int)newy, Slope, Layer,SlopeCond);
に修正してください…。
by keito94
3年前
フォーラム: C言語何でも質問掲示板
トピック: 坂道の当たり判定を作っています。
返信数: 122
閲覧数: 26608

Re: 坂道の当たり判定を作っています。

そういうことです!!
by keito94
3年前
フォーラム: C言語何でも質問掲示板
トピック: 坂道の当たり判定を作っています。
返信数: 122
閲覧数: 26608

Re: 坂道の当たり判定を作っています。

簡単に説明すると、
  • ①坂道のブロックにプレイヤーが入る。(ここはOK)
  • ②坂道のブロックの種類を識別する。(i+2を返す部分)
  • ③坂道の線分とプレイヤーの線分が設定される。
  • ④坂道の線分が、プレイヤーの線分の終点の間なら、線分の判定を行い、線分と衝突していたら、めり込み防止をした座標を返す。
  • ⑤…はずだったのだが、④が誤作動を起こし、その巻き添えで②も誤作動を起こし、普通のブロックとして判定されてしまう。
でしょうか?
by keito94
3年前
フォーラム: C言語何でも質問掲示板
トピック: 坂道の当たり判定を作っています。
返信数: 122
閲覧数: 26608

Re: 坂道の当たり判定を作っています。

purin52002 さんが書きました: これは、真になるであろうパラメータを与えても真にならないということですか?
そ、そういうことではなくてですね…。
坂道のブロックにいると判定されているときに何故か真にならないということです。
by keito94
3年前
フォーラム: C言語何でも質問掲示板
トピック: 坂道の当たり判定を作っています。
返信数: 122
閲覧数: 26608

Re: 坂道の当たり判定を作っています。

座標に内分を引かせて、型を適切なものしたのですが、(CheckSlopeの部分をVector2にしてください)
何故か線分の判定が真になりません。坂道のブロックに入った瞬間だけ、i+2になる症状が全く改善しないんですよ…。
by keito94
3年前
フォーラム: C言語何でも質問掲示板
トピック: 坂道の当たり判定を作っています。
返信数: 122
閲覧数: 26608

Re: 坂道の当たり判定を作っています。

坂道判定で座標が修正される。->修正された座標では坂道判定にならない その通りです!! 座標を代入させてみたら確かにありえない値を代入してました!! どうやら交点ではなく、内分を出力させればいいようですが…。 //式自体はあっているが…。レイヤーの数値獲得に原因がありそうだ。 if (Slope.s.x >= Player.v.x && Player.v.x < Slope.v.x || Slope.s.x <= Player.v.x && Player.v.x > Slope.v.x) { PlayerCond = 1; } else { PlayerCond = 0; } if (Pla...
by keito94
3年前
フォーラム: C言語何でも質問掲示板
トピック: 坂道の当たり判定を作っています。
返信数: 122
閲覧数: 26608

Re: 坂道の当たり判定を作っています。

purin52002 さんが書きました: 坂道ブロックに入った瞬間はi+2、そのご0が出力されるということですか?
その通りです。
仮にreturn 0 ;にブレークポイントをつけてindexをウォッチしたなら、スコープを抜けているので値を見ることができません。
それとももしかしてreturn 0 ;を返す場合のindexの値が不定になるということだったり、、、?
そりゃそうでしたか…。
by keito94
3年前
フォーラム: C言語何でも質問掲示板
トピック: 坂道の当たり判定を作っています。
返信数: 122
閲覧数: 26608

Re: 坂道の当たり判定を作っています。

i+2を出力した方のindexを調べてみたところ、正しい値が獲得できています。
purin52002 さんが書きました: 日本語力が低いのでできるだけわかりやすい文章でお願いします^p^;
ちょっとわかりにくかったですね…。
i+2を出力した後に、坂道のブロックにいるときにはi+2が出力されるはずなのに、何故か0を出力してしまう不具合というのが確認されました。

そして、return 0の部分では、indexの値が獲得されていないのがわかりました。
by keito94
3年前
フォーラム: C言語何でも質問掲示板
トピック: 坂道の当たり判定を作っています。
返信数: 122
閲覧数: 26608

Re: 坂道の当たり判定を作っています。

i+2が出力されたままつもりが、0が出力されてしまうということです。
おそらく原因はブロックとしての当たり判定にあると思われます。
by keito94
3年前
フォーラム: C言語何でも質問掲示板
トピック: 坂道の当たり判定を作っています。
返信数: 122
閲覧数: 26608

Re: 坂道の当たり判定を作っています。

デバッグして調べてみたところ、purinさんが指摘した部分に間違いはないどころか、
GetChipLayerNumが上り坂を示す25行が実行された後に30行が実行されているのを確認しました。
あと、GetChipLayerNumを最初のプログラムに追加してみてください。
by keito94
3年前
フォーラム: C言語何でも質問掲示板
トピック: アダルト動画に間違えて登録してしまった友達の話。わかる人がいたら教えてください。
返信数: 2
閲覧数: 417

Re: アダルト動画に間違えて登録してしまった友達の話。わかる人がいたら教えてください。

どうやらワンクリック契約を友人が踏んでしまったようですね。
お金はかかっていないのでご安心ください。
by keito94
3年前
フォーラム: C言語何でも質問掲示板
トピック: 坂道の当たり判定を作っています。
返信数: 122
閲覧数: 26608

Re: 坂道の当たり判定を作っています。

デバッグ用に条件式を変数に代入して、それを比較する方式にしてみたところ、式に間違いはないようです。 ですが、レイヤーの数値を獲得する部分に原因があるようです。 最初のプログラムから抜粋。 int CCollision::GetChipLayerNum(int x, int y) { POINT pt[] = { { x + mPt[0].x, y + mPt[0].y },//左上 { x + mPt[1].x, y + mPt[1].y },//上真ん中 { x + mPt[2].x, y + mPt[2].y },//右上 { x + mPt[3].x, y + mPt[3].y },//...
by keito94
3年前
フォーラム: C言語何でも質問掲示板
トピック: 坂道の当たり判定を作っています。
返信数: 122
閲覧数: 26608

Re: 坂道の当たり判定を作っています。

だとするとelse if の順番を変えてみてはどうでしょう。 言われたとおりにしてみて見ましたが、Y座標に-2が代入されてしまうバグを発見したので、以下のように修正してみました。 else if (tempaddx != 0 && slope.y != -2) { *gflag = true; *myy = slope.y; } ついでに、GetXPositionの部分に以下の修正を加えました。 //-2を返したら、ブロックとして扱う。 if (slope.x == -1) { *myx = newx; } else if (slope.x == -2) { if (tempaddx > 0...
by keito94
3年前
フォーラム: C言語何でも質問掲示板
トピック: 坂道の当たり判定を作っています。
返信数: 122
閲覧数: 26608

Re: 坂道の当たり判定を作っています。

purin52002さん、いつもお世話になっております。 自分でデバッグして、原因を突き止めてから、自分で症状を改善させましたが、まだ完成ではありません。 なぜなら、このアルゴリズムで、else if(tempaddx != 0)のところへ来ないで、ブロックとして扱われてしまうからです。 if (Slope.s.x >= Player.v.x && Player.v.x < Slope.v.x || Slope.s.x <= Player.v.x && Player.v.x > Slope.v.x) { if (ColSegments(Slope,Player,&T1,&T2,&Vres)) ...
by keito94
3年前
フォーラム: C言語何でも質問掲示板
トピック: 坂道の当たり判定を作っています。
返信数: 122
閲覧数: 26608

Re: 坂道の当たり判定を作っています。

少し誤表記がありました。 GetXPositionとGetYPositionの case 2: Slope.s = GetMatrixPos(newx, *myy - 16.0F); Slope.v = GetMatrixPos(newx + 16.0F, *myy); SlopeCond = 0; break; の部分を case 2: Slope.s = GetMatrixPos(newx, *myy + 16.0F); Slope.v = GetMatrixPos(newx + 16.0F, *myy); SlopeCond = 0; break; になおしてください。 また現在確認され...
by keito94
3年前
フォーラム: C言語何でも質問掲示板
トピック: 坂道の当たり判定を作っています。
返信数: 122
閲覧数: 26608

坂道の当たり判定を作っています。

このサイト の関数をベースにして、 //seg1,2(当たり判定)が線分、outT1,2が線分の内分比、outPosが交点(出力用) bool CCollision::ColSegments(Segment &seg1, Segment &seg2, float* outT1, float* outT2, Vector2* outPos) { Vector2 v = seg2.s - seg1.s; float Crs_v1_v2 = Vector2Cross(&seg1.v, &seg2.v); if (Crs_v1_v2 == 0.0F) { return false; } float ...
by keito94
3年前
フォーラム: C言語何でも質問掲示板
トピック: GUI作成方法について
返信数: 3
閲覧数: 794

Re: GUI作成方法について

これを見ればわかると思います。
わからなければごめんなさい。
オフトピック
Visual Basicですか…。ボクの中では.Netで本格的なプログラム=C#かF#というのが、確立されていたので意外です。
でも、Visual Basicは、ボクの中では実用的なプログラムは向いていないと思いますよ。
by keito94
3年前
フォーラム: C言語何でも質問掲示板
トピック: 龍神録プログラミングの館 サンプルプログラム VC2017エラー
返信数: 2
閲覧数: 588

Re: 龍神録プログラミングの館 サンプルプログラム VC2017エラー

エラーログを貼り付けてくれませんか?
もしくは似たような回答があるかもしれません。
by keito94
3年前
フォーラム: C言語何でも質問掲示板
トピック: utf16beの読み込み方法
返信数: 4
閲覧数: 916

Re: utf16beの読み込み方法

どうやら、C言語の標準機能で、UTF-16BEを読み込もうと努力しているわけですね。
何かのライブラリが必要だと思いますよ。
by keito94
3年前
フォーラム: C言語何でも質問掲示板
トピック: C++言語の分数を扱うプログラム
返信数: 4
閲覧数: 1677

Re: C++言語の分数を扱うプログラム

pirvateのところで、minを定義すればいいんじゃないのでしょうか?
by keito94
3年前
フォーラム: C言語何でも質問掲示板
トピック: [VS2017]クラスウィザードの使い方
返信数: 4
閲覧数: 1435

Re: [VS2017]クラスウィザードの使い方

もしそういう類があったら、ボクも使ってみたいな~。
by keito94
3年前
フォーラム: C言語何でも質問掲示板
トピック: [VS2017]クラスウィザードの使い方
返信数: 4
閲覧数: 1435

Re: [VS2017]クラスウィザードの使い方

僕もわからないと思っていたところです。
クラスウィザードってどうやって使うのかを知りたかったところです。
by keito94
3年前
フォーラム: C言語何でも質問掲示板
トピック: DxLib導入しましたが実行エラーがでます
返信数: 5
閲覧数: 958

Re: DxLib導入しましたが実行エラーがでます

もし、検索する気ないのなら、BASE64と検索して、
► スポイラーを表示
上の文をデコードしてみて。
by keito94
3年前
フォーラム: C言語何でも質問掲示板
トピック: 実行できませんでした WinMain のバグ?
返信数: 17
閲覧数: 2464

Re: 実行できませんでした WinMain のバグ?

最初にお聞きしたいのですが、”DxLib.h”はインクルードされてますか?
されていないのならインクルードしてるどうか確認してください。
by keito94
3年前
フォーラム: C言語何でも質問掲示板
トピック: 複数アニメーションの読み込みについて
返信数: 2
閲覧数: 571

Re: 複数アニメーションの読み込みについて

②についてはよくわかりませんが、①については、特に影響はないと思います。(どうやって、まとめてある画像を読み込むのかはわかりませんが…。)
by keito94
3年前
フォーラム: C言語何でも質問掲示板
トピック: マップエディターのファイルの読み込み方。
返信数: 10
閲覧数: 1689

Re: マップエディターのファイルの読み込み方。

あっ、解決押すの忘れてました!
by keito94
3年前
フォーラム: C言語何でも質問掲示板
トピック: マップエディターのファイルの読み込み方。
返信数: 10
閲覧数: 1689

Re: マップエディターのファイルの読み込み方。

データ関係は、コピーではなく参照を渡せばいいわけなんですね!!
一つC++の知識が増えました!!
ありがとうございます!!
オフトピック
僕がthisポインタを学んだことによって、炎上の原因にもなった問題が簡単に解決しました!!(あの時はC++の知識がほんとになかったもので…。)
あと、51行目のxの代わりにyをインクリメントしていた件についてはご指摘ありがとうございました!!
by keito94
3年前
フォーラム: C言語何でも質問掲示板
トピック: マップエディターのファイルの読み込み方。
返信数: 10
閲覧数: 1689

Re: マップエディターのファイルの読み込み方。

>>梅衣堂ひよ さん
マップエディターについているマップ読み込みのためのコードで、可読性を重視しているから仕方ないのです。
by keito94
3年前
フォーラム: C言語何でも質問掲示板
トピック: マップエディターのファイルの読み込み方。
返信数: 10
閲覧数: 1689

Re: マップエディターのファイルの読み込み方。

みけCAT さんが書きました: 何か質問はありますか?
すいません、質問を忘れていました。
どうすれば、例外をスローせずにマップを表示させることができますか?
by keito94
3年前
フォーラム: C言語何でも質問掲示板
トピック: マップエディターのファイルの読み込み方。
返信数: 10
閲覧数: 1689

マップエディターのファイルの読み込み方。

Platinumというマップエディターでマップを読み込んでそれを呼び出すプログラムを書いているのですが、ソースコードのようなエラーが起こってしまいます。 Source.cpp #include "DxLib.h" #include "fmfmap.h" const int MAP_CELL = 16; class CGame { int BitCount; int MapGraph; CFmfMap MapObj; public: //コンストラクター。 CGame() { MapLoad("テスト用.fmf", "マップチップ.bmp"); } //マップチップの読み込みライブラリを呼び出す...
by keito94
3年前
フォーラム: C言語何でも質問掲示板
トピック: 継承されていないクラスのコンストラクターの呼び出し方(初学者)
返信数: 7
閲覧数: 1880

Re: 継承されていないクラスのコンストラクターの呼び出し方(初学者)

ごめんなさい、質問の意味が僕にしかわかりませんでしたね…。知識不足がまたたたってしまいました。
しっかり、C言語とC++の勉強をし直してこようと思います。
一応この質問は解決とさせてください。
by keito94
3年前
フォーラム: C言語何でも質問掲示板
トピック: 継承されていないクラスのコンストラクターの呼び出し方(初学者)
返信数: 7
閲覧数: 1880

Re: 継承されていないクラスのコンストラクターの呼び出し方(初学者)

左辺値ウンタラカンタラは気のせいだったようです。訂正してください。
…でも、この例外の原因ならわかりますよね?
by keito94
3年前
フォーラム: C言語何でも質問掲示板
トピック: 継承されていないクラスのコンストラクターの呼び出し方(初学者)
返信数: 7
閲覧数: 1880

Re: 継承されていないクラスのコンストラクターの呼び出し方(初学者)

このエラーの解決法を聞きたければ、 最小限の・自己完結した・確認可能なサンプルコード を提示してください。 こういうことでしょうか? #include <iostream> using namespace std; class B { public: B(); }; class A { public: B* b; }; B::B() { cout << "Bのコンストラクターが起動されました。" << endl; } int main(void) { A* a; cout << "Bのクラスのコンストラクターを起動します。" << endl; a->b = new B();//ここで何らかの...
by keito94
3年前
フォーラム: C言語何でも質問掲示板
トピック: 継承されていないクラスのコンストラクターの呼び出し方(初学者)
返信数: 7
閲覧数: 1880

継承されていないクラスのコンストラクターの呼び出し方(初学者)

C++の初歩的な質問すいません。以下のようなソースコードは継承されていないクラスから違うクラスで宣言されているクラスのコンストラクターを呼び出そうとしているものです。検索しても継承されているコンストラクターの情報しかありませんでした。コメントのようなエラーが出てしまいます。 A.cpp #include <iostream> #include "A.h" #include "B.h" using namespace std; void A::Const{ cout << "コンストラクター起動!" << endl; b = new B(); delete b; } int main(void)...
by keito94
3年前
フォーラム: C言語何でも質問掲示板
トピック: 例外がスローされました:GameがNullPtrでした。を解消するにはどうすればいいですか?
返信数: 5
閲覧数: 3979

Re: 例外がスローされました:GameがNullPtrでした。を解消するにはどうすればいいですか?

皆さんの言うとおり知識不足と、自分でもわけが分からずやっていたのがたたってこんな結果になってしまいました…。
ごめんなさい、C++の基礎を学び直してきます…。
ということで一応解決とさせてください…。
by keito94
3年前
フォーラム: C言語何でも質問掲示板
トピック: 例外がスローされました:GameがNullPtrでした。を解消するにはどうすればいいですか?
返信数: 5
閲覧数: 3979

例外がスローされました:GameがNullPtrでした。を解消するにはどうすればいいですか?

Stage.cppでCPlayerを初期化しようとすると、GameがNullptrだったという例外がスローされてしまいます。 これを解消するにはどうすればいいのでしょうか? Stage.h #pragma once class CStage { public: const char* Name; CStage(const char* name) : Name(name) {} virtual void Init() {} virtual void Destroy() {} virtual bool Move() { return true; } virtual void Draw() {} v...
by keito94
3年前
フォーラム: C言語何でも質問掲示板
トピック: 関数のオーバーライドがされていない。(初学者)
返信数: 10
閲覧数: 2172

Re: 関数のオーバーライドがされていない。(初学者)

皆様方は、僕が継承もわからないC++初心者であることをよくご指摘なさいました。
この件は一旦解決とさせていただき、C++の訓練に励みたいと思います。
by keito94
3年前
フォーラム: C言語何でも質問掲示板
トピック: 関数のオーバーライドがされていない。(初学者)
返信数: 10
閲覧数: 2172

Re: 関数のオーバーライドがされていない。(初学者)

usao さんが書きました: このコードが どのように動くと想定しているのか について具体的に説明した方が早そうです.
提示コードからではそのあたりの事柄が読み取れません.
Main.cppのMoveとDrawにPlayer.cppのMoveとDrawをオーバーライドさせ、Runでそれを動作させるのですが、
実行してみるとMain.cppのMoveとDrawにPlayer.cppのMoveとDrawが何故かオーバーライドされず、黒い画面が表示されてしまいます。
by keito94
3年前
フォーラム: C言語何でも質問掲示板
トピック: 関数のオーバーライドがされていない。(初学者)
返信数: 10
閲覧数: 2172

Re: 関数のオーバーライドがされていない。(初学者)

virtualをCMoverにつけてあげたのですが、プログラムの画像が表示されません。 メインプログラムのコードをあげます。どこかおかしな点はありますか? Main.h #pragma once #include "DxLib.h" class CGameMain { public: int PlayerGh[32]; CGameMain(); ~CGameMain(); void FirstInit(); void Run(); virtual void Move() {} virtual void Draw() {} }; extern CGameMain* Game; Main.cpp ...
by keito94
3年前
フォーラム: C言語何でも質問掲示板
トピック: 関数のオーバーライドがされていない。(初学者)
返信数: 10
閲覧数: 2172

Re: 関数のオーバーライドがされていない。(初学者)

>>DIXQさん わかりました。 ソースコード全体を掲示します。 Joypad.h #pragma once class CJoyPad { public: int Input, EdgeInput; void Update(); int Get(int JoyPadCode); }; JoyPad.cpp #include "Main.h" #include "JoyPad.h" void CJoyPad::Update() { int i; i = GetJoypadInputState(DX_INPUT_KEY_PAD1); EdgeInput = i & ~Input; Input =...
by keito94
3年前
フォーラム: C言語何でも質問掲示板
トピック: 関数のオーバーライドがされていない。(初学者)
返信数: 10
閲覧数: 2172

関数のオーバーライドがされていない。(初学者)

関数のオーバーライドと言うものを利用して、何かのプログラムを作ろうとしているのですが、 どういうわけか関数のオーバーライドがされず、黒い画面のみが表示されるのみです。 関数がオーバーライドされない原因はどこにありますか? メインプログラムの宣言 virtual void Move() {} virtual void Draw() {} メインプログラム void CGameMain::Run() { Move(); Draw(); } オーバーライドされる部分の宣言 virtual bool Move(); virtual void Draw(); オーバーライドされる部分 bool CPla...
by keito94
3年前
フォーラム: C言語何でも質問掲示板
トピック: キャラが正しくアニメーションされない。
返信数: 11
閲覧数: 2149

Re: キャラが正しくアニメーションされない。

つまり、デバッグのトレーニングをしろというわけですね…
今までプログラミング言語の知識だけで挑んでいたのが目に見えてきました…。
by keito94
3年前
フォーラム: C言語何でも質問掲示板
トピック: キャラが正しくアニメーションされない。
返信数: 11
閲覧数: 2149

Re: キャラが正しくアニメーションされない。

ごめんなさい…。
プログラミング言語の基礎中の基礎を学び直したいと思います。
by keito94
3年前
フォーラム: C言語何でも質問掲示板
トピック: キャラが正しくアニメーションされない。
返信数: 11
閲覧数: 2149

Re: キャラが正しくアニメーションされない。

NNNさん、ご指摘ありがとうございました。
たいちうさん、その点に関しては大丈夫です。
プログラミング言語の学習は一応しているつもりです。
by keito94
3年前
フォーラム: C言語何でも質問掲示板
トピック: キャラが正しくアニメーションされない。
返信数: 11
閲覧数: 2149

Re: キャラが正しくアニメーションされない。

計算した値を調べてみたところ、rowが列数を得たのつもりが、配列の合計を得てしまったことにあるようですね。
みけCATさん、デバッグの支援をしていただきありがとうございました。
オフトピック
何だ、簡単な設計ミスだったのか…。
これからは見落としとかがないようにしよう…。
by keito94
3年前
フォーラム: C言語何でも質問掲示板
トピック: キャラが正しくアニメーションされない。
返信数: 11
閲覧数: 2149

キャラが正しくアニメーションされない。

キャラのアニメーションを動かすテストをしているのですが、移動しようとすると、キャラが消えてしまいます。 コードは以下のとおりです。 Main.cpp(画像読み込みの部分のみ) //画像は添付ファイルにあります。 LoadDivGraph("自作キャラ.bmp", 32, 8, 4, 16, 16, PlayerGh); Anim.h(一部のみ) #pragma once #include <vector> using namespace std; const int MLOOP = -1; const int MSTOP = -2; const int MEND = -3; enum MOTI...
by keito94
3年前
フォーラム: C言語何でも質問掲示板
トピック: モーションが切り替わらない。
返信数: 6
閲覧数: 1574

Re: モーションが切り替わらない。

今の質問はひとまず解決とさせていただきます。
さっきの質問はまた別のスレで答えようと思います。
by keito94
3年前
フォーラム: C言語何でも質問掲示板
トピック: モーションが切り替わらない。
返信数: 6
閲覧数: 1574

Re: モーションが切り替わらない。

物は試し、と //前と同じなら変更なし。 if (PrevMotion == motion) return; motion = PrevMotion; // 前と同じモーションなら変更しない if (PrevMotion == motion) return; PrevMotion = motion; を削除してみたところ、モーションの切り替えはできたのですが、今度は移動のときにキャラが消えてしまいます。 デバッグコンソールによると、移動モーション時に アニメモーション番号:1 アニメフレーム番号:-8 と移動モーションではありえない数値が書かれているのがわかりました。 移動モーションの数字と移...

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