トップページ > 記事閲覧
XとY軸しかないゲームで攻撃した瞬間にその戦闘シーンのみをドアップしたい
名前:マーク42 日時: 2020/08/01 17:48

できるかわからないのですが、XとY軸しかないゲームで主人公が敵に攻撃した瞬間にその戦闘シーンのみをドアップしたいのですが やはりZ軸がないとできないでしょうか? XとY軸のみで疑似的にドアップにできないか考えているのですが、何かいいアイディアはないでしょうか? 以下のプログラムを参考にしました。実際に実行しました。 /***** main.cpp *****/ #include <math.h> #include <DxLib.h> static const float ROTATE_SPEED = DX_PI_F/90;//回転スピード // (x,y)の点を(mx,my)を中心にang角回転する void rotate(float *x, float *y, const float ang, const float mx, const float my){ const float ox = *x-mx, oy = *y-my; *x = ox * cos(ang) + oy * sin(ang); *y = -ox * sin(ang) + oy * cos(ang); *x += mx; *y += my; } int WINAPI WinMain(HINSTANCE,HINSTANCE,LPSTR,int){ ChangeWindowMode(TRUE), DxLib_Init(), SetDrawScreen( DX_SCREEN_BACK ); float cameraX=0, cameraZ=-20; //カメラの座標 const float targetX=0, targetZ=0;//カメラの視線の先ターゲットの座標 //3Dモデルの読み込み int ModelHandle = MV1LoadModel( "dat/Lat式ミク/Lat式ミクVer2.3_Normal.pmd" ) ; //奥行0.1〜1000までをカメラの描画範囲とする SetCameraNearFar( 0.1f, 1000.0f ) ; while(!ScreenFlip()&&!ProcessMessage()&&!ClearDrawScreen()){ if( CheckHitKey(KEY_INPUT_LEFT) > 0 ){//左キーが押されていたら rotate(&cameraX, &cameraZ, +ROTATE_SPEED, targetX, targetZ);//回転 } if( CheckHitKey(KEY_INPUT_RIGHT) > 0 ){//右キーが押されていたら rotate(&cameraX, &cameraZ, -ROTATE_SPEED, targetX, targetZ);//回転 } //第一引数の視点から第二引数のターゲットを見る角度にカメラを設置 SetCameraPositionAndTarget_UpVecY( VGet( cameraX, 10, cameraZ ), VGet( targetX, 10.0f, targetZ ) ) ; // 3Dモデルの描画 MV1DrawModel( ModelHandle ) ; } DxLib_End(); return 0; }
メンテ

Page: 1 |

Re: XとY軸しかないゲームで攻撃した瞬間にその戦闘シーンのみをドアップしたい ( No.1 )
名前:PaperDEX 日時:2020/08/01 20:19

>XとY軸しかないゲームで主人公が敵に攻撃した瞬間にその戦闘シーンのみをドアップしたいのですが やはりZ軸がないとできないでしょうか? XとY軸しかないゲームとは2Dのゲームの事ですか? 2Dでも画像をDrawExtendGraph等で拡大描画すれば出来ますよ。 DrawExtendGraphのリファレンスページ↓ ttps://dxlib.xsrv.jp/function/dxfunc_graph1.html#R3N9 >以下のプログラムを参考にしました。実際に実行しました。 すいません、2Dの画面拡大と全く関係ないコードのようですか、何を参考にしたのでしょうか? (3Dモデルを読み込んで矢印キーでターゲットを中心にカメラ位置を回転させるコードのようですが...) コードの張り間違いですか? もしかして、3D描画で被写体に近づかずに拡大したいって事ですか? それなら、SetupCamera_Perspectiveで視野角狭くすればできますよ。 SetupCamera_Perspectiveのリファレンスページ↓ ttps://dxlib.xsrv.jp/function/dxfunc_3d_camera.html#R12N6
メンテ
Re: XとY軸しかないゲームで攻撃した瞬間にその戦闘シーンのみをドアップしたい ( No.2 )
名前:マーク42 日時:2020/08/02 00:06

PaperDEXさん、どうもありがとうございます。 XとY軸のみの2Dゲームでキャラクターは2Dのドット絵です。 自分のマス9マスと敵のマス9マスで全18マスを移動して、相手に近寄って攻撃するのですが、その際に攻撃している瞬間にその瞬間の戦闘シーンが ドアップにできないかなと思っています。 以前に作ったプロトタイプのようなソースを張らせていただきます。 ://33.gigafile.nu/0808-b781ffff9227987f4c2b11cb6e6eed0ee
メンテ
Re: XとY軸しかないゲームで攻撃した瞬間にその戦闘シーンのみをドアップしたい ( No.3 )
名前:PaperDEX 日時:2020/08/02 00:59

>XとY軸のみの2Dゲームでキャラクターは2Dのドット絵です。 それじゃあDrawExtendGraph等で拡大描画すれば出来ます。 DrawExtendGraphのリファレンスページ↓ ttps://dxlib.xsrv.jp/function/dxfunc_graph1.html#R3N9 >自分のマス9マスと敵のマス9マスで全18マスを移動して、相手に近寄って攻撃するのですが、その際に攻撃している瞬間にその瞬間の戦闘シーンが ドアップにできないかなと思っています。 それでは、まずは自分でDrawExtendGraph関数で拡大描画してみてください。 具体的に何がわからなくて詰まっているのか書かないとこれ以上答えようが無いです。 あと、コードの書き方かなり独特ですね…。 誰かに習いました?独学ですか? ヘッダーファイルに直接関数の定義書くのは普通じゃないですよ。 ヘッダー(.h)には宣言だけ書いて、定義はソースファイル(.cpp)に書くのが一般的です。 厳しい事言いますが、とりあえずコードの書き方を全体的に見直した方がいいですよ。 このコード見せた所でまともに相手してくれる人はかなり限られると思います...。
メンテ
Re: XとY軸しかないゲームで攻撃した瞬間にその戦闘シーンのみをドアップしたい ( No.4 )
名前:トリックオアトリート 日時:2020/08/02 10:10

ttps://dxlib.xsrv.jp/cgi/patiobbs/patio.cgi?mode=view&no=4966 なぜ処理しないの?
メンテ
Re: XとY軸しかないゲームで攻撃した瞬間にその戦闘シーンのみをドアップしたい ( No.5 )
名前:あいおい? 日時:2020/08/02 11:45

戦闘画面を別のMakeScreenに描画して、拡大処理が必要なときだけスクリーン自体を拡大描画した方が手っ取り早いかと。
メンテ
Re: XとY軸しかないゲームで攻撃した瞬間にその戦闘シーンのみをドアップしたい ( No.6 )
名前:マーク42 日時:2020/08/02 15:47

PaperDEXさん、返信どうもありがとうございます。 トリックオアトリートさん、先ほど処理させて頂きました。 あいおい?さん、ドット絵を扱う変数がplayerGHandleではなくplayerGHandle[8]であるため、MakeScreenが思うように扱えず苦戦していますが 以前に少し使ったことのあるDrawExtendGraphを使い頑張ってみます。どうもありがとうございます。
メンテ
Re: XとY軸しかないゲームで攻撃した瞬間にその戦闘シーンのみをドアップしたい ( No.7 )
名前:あいおい? 日時:2020/08/02 16:45

単純に描画先をMakeScreenで作成したスクリーンに変更すれば良いだけですよ。グラフィックハンドルが配列だとしても関係ないと思いますが。
メンテ
Re: XとY軸しかないゲームで攻撃した瞬間にその戦闘シーンのみをドアップしたい ( No.8 )
名前:トリックオアトリート 日時:2020/08/02 17:10

ttps://dxlib.xsrv.jp/cgi/patiobbs/patio.cgi?mode=view&no=4966 なぜ処理しないの?
メンテ
Re: XとY軸しかないゲームで攻撃した瞬間にその戦闘シーンのみをドアップしたい ( No.9 )
名前:トリックオアトリート 日時:2020/08/02 17:12

ttps://dxlib.xsrv.jp/cgi/patiobbs/patio.cgi?mode=view&no=4973 > この掲示板は特にマルチポストを禁止していませんでしたが、マルチポストと知らずに回答された方が > マルチポスト先で既に解決していたり有効な回答を得ていたりするのを発見して徒労感を感じてしまう > という事態は避けたいので、申し訳ありませんが本掲示板もマルチポストを禁止としたいと思います 管理人さんがこうおっしゃってます。 この意を汲んでなぜ処理をしないのですか?
メンテ
Re: XとY軸しかないゲームで攻撃した瞬間にその戦闘シーンのみをドアップしたい ( No.10 )
名前:P 日時:2020/08/02 23:14

マーク42さん 一応ソースコードを見させていただいたのですが 変わらずヘッダーファイルに宣言や関数の実装をしてあるんですね… 読んでいただけるかはわかりませんが、ここで説明します ソースから別のソースにある変数や関数を読み込むには ヘッダーに宣言として書いておくことが必要です もしヘッダーに『int a=0;』と書いてしまいますと 別のソースでヘッダーを#includeするたびに そのaという変数を宣言しては実体にするという処理を続けるため 同じ名前の変数ができあがります これは多重定義となりエラーとなります そのため、ヘッダーに実装や定義を書くことは基本的にNGとなっています C++の機能であるテンプレート関数やコンパイル時定数はヘッダーでもOKです インライン関数もヘッダーに書いて良いというコーディング規約もあるみたいなので 全部が全部ダメというわけではないですが トリックオアトリートさん > 管理人さんがこうおっしゃってます。 > この意を汲んでなぜ処理をしないのですか? もしよろしければなのですが、彼が今までどのような対応をしてきたのかというのに関して 一度この掲示板の過去ログを見てみてると、そのなぜを解決できると思います。
メンテ
Re: XとY軸しかないゲームで攻撃した瞬間にその戦闘シーンのみをドアップしたい ( No.11 )
名前:トリックオアトリート 日時:2020/08/03 06:37

伝わっていないようなので言い直します。 処理をしない理由を聞いているのではありません。 処理をしろと言っています。
メンテ
Re: XとY軸しかないゲームで攻撃した瞬間にその戦闘シーンのみをドアップしたい ( No.12 )
名前:クロエ 日時:2020/08/03 10:43

横から済みませんが、 >なぜ処理しないの? 私には処理をしない理由を聞いてるようにしか解釈のしようがありませんでした。
メンテ
Re: XとY軸しかないゲームで攻撃した瞬間にその戦闘シーンのみをドアップしたい ( No.13 )
名前:マーク42 日時:2020/08/03 14:24

Pさん、どうもありがとうございます。 あれ、処理してませんでしたか?ちゃんと解答済みにしたはずなのですが。
メンテ
Re: XとY軸しかないゲームで攻撃した瞬間にその戦闘シーンのみをドアップしたい ( No.14 )
名前:トリックオアトリート 日時:2020/08/03 14:29

マルチポストの場合にどういった処理が必要なのかはご存知のはずです。 こちらもまだです。 ttps://teratail.com/questions/278015
メンテ
Re: XとY軸しかないゲームで攻撃した瞬間にその戦闘シーンのみをドアップしたい ( No.15 )
名前:トリックオアトリート 日時:2020/08/03 14:30

「まだです」というのは「ちゃんと処理しなさい」ということです。念のため。
メンテ
Re: XとY軸しかないゲームで攻撃した瞬間にその戦闘シーンのみをドアップしたい ( No.16 )
名前:ムートン 日時:2020/08/03 14:43

というか「ちゃんと処理できないならマルチポストするな」が正しい。 各所に迷惑だけかけて(自らは何も学習せずに)終わってるので。
メンテ
Re: XとY軸しかないゲームで攻撃した瞬間にその戦闘シーンのみをドアップしたい ( No.17 )
名前:相田 日時:2020/08/03 14:44

> マルチポストの場合にどういった処理が必要なのかはご存知のはずです。 ご存じないようなので:  ttps://teratail.com/help より引用  teratailでは、マルチポスト※の推奨はしていません。  やむを得ず複数のサイトに質問を投稿された場合は、「質問内容にマルチポストをする理由を書き、他のサイトの投稿へのリンクを貼ってください。」  また、解決した際には必ずteratail及びすべての投稿に解決した旨と、どのように解決したかを記載してください。
メンテ

Page: 1 |

題名
名前
コメント
パスワード (記事メンテ時に使用)

   クッキー保存