Re: 3Dアクション基本のTPSカメラについて ( No.1 ) |
- 名前:管理人 日時:2020/08/29 01:59
了解しました
3DサンプルプログラムをTPS視点のカメラにしたプログラムを作成してみますので
数日ほどお待ちください m(_ _)m
|
Re: 3Dアクション基本のTPSカメラについて ( No.2 ) |
- 名前:管理人 日時:2020/08/31 10:54
|
Re: 3Dアクション基本のTPSカメラについて ( No.3 ) |
- 名前:chairo 日時:2020/08/31 18:53
お返事遅れました。ありがとうございます。後で実行してみます!
取り急ぎ失礼いたします。
|
Re: 3Dアクション基本のTPSカメラについて ( No.4 ) |
- 名前:chairo 日時:2020/09/01 17:38
ttps://drive.google.com/file/d/1PdYzy1HzlXy7g0wEhaU7nJolI2puXmKy/view?usp=sharing
お陰様で、思った通りのTPSカメラの切り替えをすることができました!
参考プログラムの作成、ありがとうございました!
|
Re: 3Dアクション基本のTPSカメラについて ( No.5 ) |
- 名前:管理人 日時:2020/09/02 00:43
ご希望の処理が実現できたようで何よりです!
本件とは話がそれてしまいますが、動画を拝見する限りではアンチエイリアスを使用されていないようですが、
アンチエイリアスを使用するとジャギが無くなり見た目が綺麗になりますので、よろしければ DxLib_Init の呼び出し前に
SetFullSceneAntiAliasingMode( 4, 4 );
↑と記述して、裏画面に対するアンチエイリアスを有効にしてみてください
( 引数の 4, 4 の値が大きいほど綺麗なアンチエイリアスになります( 但し値が大きいほど処理負荷が大きくなります ) )
もし MakeScreen で作成された画面に対して3D描画を行われている場合は、MakeScreen を呼ぶ前に
SetCreateDrawValidGraphMultiSample( 4, 4 );
↑と記述すると、MakeScreen で作成される画面がアンチエイリアス機能付きになります
よろしければお試しください m(_ _)m
|
Re: 3Dアクション基本のTPSカメラについて ( No.6 ) |
- 名前:chairo 日時:2020/09/02 20:17
ありがとうございます。さっそく試してみます。
実は、別の問題が出てきてしまったのでご相談させていただければと思います。
dxライブラリでのfbxファイルの読み込み(ttps://dxlib.xsrv.jp/cgi/patiobbs/patio.cgi?mode=view&no=3517)を試しているのですが、うまくいきません。
fbx sdkは2020.1を、visual studioをダウングレードして2017を使用しています。
よろしくお願いします。
|
Re: 3Dアクション基本のTPSカメラについて ( No.7 ) |
- 名前:管理人 日時:2020/09/03 01:12
すみません、うまくいかないとのことですが、具体的にはどのようにうまくいかないのでしょうか?
|
Re: 3Dアクション基本のTPSカメラについて ( No.8 ) |
- 名前:chairo 日時:2020/09/03 12:20
失礼しました。上記のリンク先掲示板No.4の手順を上記の環境で試してみて、MV1LoadModelのfbxファイルの読み込みができませんでした。
|
Re: 3Dアクション基本のTPSカメラについて ( No.9 ) |
- 名前:管理人 日時:2020/09/03 23:11
ご返答ありがとうございます
No.4 の手順を試してみて、特に DxLibMakeプロジェクトでのビルドではエラーは発生しなかったにも関わらず
MV1LoadModel で fbxファイルの読み込みはできなかった、ということでしょうか?
一応やり方は現在でも載せていただいたスレッドの通り…と思ったのですが、現在は
VisualStudio 用の libファイルがバージョン毎に分かれていてかなり複雑になっていました
現状ではこちらの『DXライブラリのソースを自分のプロジェクトに入れてコンパイルする』方式が
あっているかもしれませんので、よろしければこちらをダウンロードしてください m(_ _)m
https://dxlib.xsrv.jp/temp/DxLibSourceTest_WithUseCLib.zip
↑こちらの圧縮ファイルの中にあるのは、Test.cpp の中に書かれたプログラムを
実行するプロジェクトなのですが、通常のDXライブラリの使い方と異なり、
DxGraphics.cpp や DxFont.cpp などのDXライブラリのソースを直接コンパイルして
実行する方式になっています
この方法の場合、載せていただいたスレッドのように DxLibMake で作成した libファイルを
自分のプロジェクトにコピーする、といった手順が省け、どのバージョン用の libファイルを
コピーするべきなのか迷わずに済むのでお勧めです
よろしければ DxLibSourceTest_WithUseCLib.zip の中のプロジェクトの設定を参考に
ご自身のプロジェクトでも『DXライブラリのソースを直接コンパイルして実行する』方式を
試してみてください m(_ _)m
|
Re: 3Dアクション基本のTPSカメラについて ( No.10 ) |
- 名前:chairo 日時:2020/09/09 16:54
ありがとうございます!試してみますね。
さて、サンプルゲームの「弾当てゲーム」のスクリプト(ttps://dxlib.xsrv.jp/dxsample.html)をもとに、いよいよ射撃のコードを組んでみたのですが、
(動画:ttps://drive.google.com/file/d/1_snx2CDzPiZzu9OUcEKo9-Fws1MWMq5L/view?usp=sharing)
「弾当てゲーム」のスクリプトは、一定の方向にしか玉が飛ばない仕様となっているため、モデルの向いた方向(3dアクション基本で方向ボタンを入力した方向)に玉(動画の注射器)を飛ばすことができずに困っています。
3Dモデルの移動キーを入力した方向(モデルの顔が向いている方向、矢印キーの←を押したら左の方向)に玉(弾丸)を飛ばす処理を知りたいです。
ソースコードは以下になります。
ttps://drive.google.com/drive/folders/1GYiExT6A9MnPA9Kk-Vgoo-fNOYl-ZUpx?usp=sharing
よろしくお願いします。
|
Re: 3Dアクション基本のTPSカメラについて ( No.11 ) |
- 名前:管理人 日時:2020/09/10 02:57
アップしていただいたプログラムではショットの Speed の代入処理が
Shot->Speed = VScale(VNorm(VGet(TEKI_INIT_X - pl.Position.x, pl.Angle + DX_PI_F, 0.0f)), PC_SHOT_SPEED);
となっていますが、プレイヤーの向いている方向は pl.TaregetMoveDirection に代入されていますので
Shot->Speed = VScale(pl.TaregetMoveDirection, PC_SHOT_SPEED);
↑のようにすればプレイヤーの向いている方向にショットを飛ばすことができます
|
Re: 3Dアクション基本のTPSカメラについて ( No.12 ) |
- 名前:chairo 日時:2020/09/18 02:10
引き続きありがとうございます。
ショットを試してみましたが、銃口から発射される弾(注射器)の角度を一定(モデルの顔が向いている向き、構えている拳銃の銃口向きと同じ向き)にするにはどうしたらいいでしょうか?
動画
ttps://drive.google.com/file/d/1wI3wlmAkqaqt8VSDMzr3iJl09QY5yJ2j/view?usp=sharing
実現したい処理
ttps://drive.google.com/file/d/1WBdzmM75YuXhckc_WhqbPe6iL5vLyKRk/view?usp=sharing
ソースコードは以下になります。
注射器のハンドルはpl.shotgraphhandleとなります。
ttps://drive.google.com/drive/folders/1Lqt7_BpgIpF-bifnLPDw6f_xYBNEarAE?usp=sharing
よろしくお願いします。
|
Re: 3Dアクション基本のTPSカメラについて ( No.13 ) |
- 名前:管理人 日時:2020/09/18 22:55
MV1SetRotationYUseDir という関数を使えば向きを一定にできると思います
MV1SetRotationYUseDir( pl.shotgraphhandle, 飛んでいく方向のVECTOR, 補正角度 );
↑『飛んでいく方向のVECTOR』は飛ばす際の移動値に使用している VECTOR をそのまま渡してください
『補正角度』はモデルの初期の向きによって異なるので、最初は 0.0f を渡して、向きが違ったら
DX_PI / 2.0f を渡して90度向きを補正して、それでも向きが違ったら -DX_PI / 2.0f を渡して -90度向きを補正して…
といった感じで正しい向きになる補正値を探してみてください m(_ _)m
|
Re: 3Dアクション基本のTPSカメラについて ( No.14 ) |
- 名前:chairo 日時:2020/09/25 00:36
引き続きご返信ありがとうございます。試しています。
現在、ショットをテストしているのですが、いつもショットを2発発射した後に、弾丸(注射器)が一瞬だけ表示される(瞬間移動?)のような挙動になってしまって困っています。
動画
ttps://drive.google.com/file/d/1bFZ0U9LIg9haqV9Nfi6E6FA973H0ZpB3/view?usp=sharing
常時注射器のショットを最初の2発のような直線移動にするにはどうすればよいでしょうか。
ソースコードは以下になります。
ttps://drive.google.com/drive/folders/1RhZmVNXT1xUamKEjj-wQXkE-DnsoidoI?usp=sharing
よろしくお願い致します。
|
Re: 3Dアクション基本のTPSカメラについて ( No.15 ) |
- 名前:管理人 日時:2020/09/26 00:13
申し訳ありません、一般的なプログラムのバグは極力ご自身の力で解決するようにしてください m(_ _)m
正常に動作しない原因は chairoさんご自身が組まれたプログラムの中にありますので、
一つ一つ原因となりそうな箇所のコードを調べてみてください
|
Re: 3Dアクション基本のTPSカメラについて ( No.16 ) |
- 名前:chairo 日時:2020/09/26 19:39
了解しました。一応、バグの原因は弾当てゲームのpcshotmoveのUseflagによる判定だと分かったのですが、ここからどう修正していいか、何をどうすればいいかが分からない状況です...。
void PcShotMove(CHARA* ch
)
{
int i, j;
PCSHOT* Shot;
CHARA* chara;
chara = Characommon.Char;
DrawFormatString(0, 0, GetColor(0, 255, 0), "hp%d", chara->Hp);
Shot = pl.Shot;
for (i = 0; i < PC_SHOT_MAX_NUM; i++, Shot++)
{
if (Shot->UseFlag == FALSE) continue;
switch (Shot->Type)
{
case PC_SHOT_TYPE_NORMAL:
case PC_SHOT_TYPE_SUB:
Shot->Position = VAdd(Shot->Position, Shot->Speed);
Shot->Speed.y -= PC_SHOT_GRAVITY;
}
{
for (j = 0; j < TEKI_MAX_NUM; j++, chara++)
{
if (chara->UseFlag == 0 || chara->HitFlag == 0) continue;
if (VSquareSize(VSub(Shot->Position, chara->Position)) > TEKI_HIT_SIZE * TEKI_HIT_SIZE)
continue;
PlaySoundMem(GameData.DamageSoundHandle, DX_PLAYTYPE_BACK);
chara->Hp -= 10;
pl.ShotNum--;
}
/*if (chara->Hp == 0) {
Chara_Terminate(&npl[1].CharaInfo);
//Chara_PlayAnim(ch, 0);
}*/
}
}
}
if (chara->UseFlag == 0 || chara->HitFlag == 0) continue;の部分をif (chara->HitFlag == 0) continue;にすると何度撃っても直線移動になりますが、
敵に18発以上当たると突然画面が真っ暗に(chara->hp-=10をコメントアウトにすると弾が出なく)なります。(原因が分からず、各種terminateにブレークポイントを合わせてもモデルが削除された感じではありませんでした。)
極力自身の力で解決したいのですが、参考にできる資料がなく、それ以上にどう修正したらいいかが分からないため、詰まっている状況です...。
|
Re: 3Dアクション基本のTPSカメラについて ( No.17 ) |
- 名前:管理人 日時:2020/09/27 21:56
ご自身で組まれたプログラムをどう修正すれば良いか分からないという場合は
ご自身の力量に見合わないプログラムを組んでしまっている可能性があります
これからどんどん追加で組んでいくプログラムが理解できていない状態になっていますと
何かある度に誰かに頼らなくては解決できなくなってしまいますので、
どうしても原因が突き止められず修正もできない場合は一度プログラムを0に戻して
理解てきている範囲で組みなおした方が良いと思います
|