DXライブラリ3Dでのカメラの向きと進む向き
Re: DXライブラリ3Dでのカメラの向きと進む向き
入力を定義する関数。
ですか?
8方位は、
斜めが押されたらspeed=1;
と四つ書いてみたら同じ速さになりました。
ですか?
8方位は、
斜めが押されたらspeed=1;
と四つ書いてみたら同じ速さになりました。
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 14年前
- 住所: 東海地方
- 連絡を取る:
Re: DXライブラリ3Dでのカメラの向きと進む向き
いえ違いますよ。ptolemy さんが書きました:入力を定義する関数。
ですか?
今の時点で「入力を定義する」と言う具体的な動作を説明できますか?
第3者にも分かるあいまいな要素のないものを提示して下さい。そのまま動いて、ちゃんと見れるソースコードの掲示がベストです。ptolemy さんが書きました: 8方位は、
斜めが押されたらspeed=1;
と四つ書いてみたら同じ速さになりました。
http://dixq.net/board/board.html
以下引用
前に提示されたコードもコンパイルが通らない不完全なものですから、この条件は満たされておりません。[C言語何でも質問掲示板でのみ適用される事項]
・トピックを立て、解決した場合は「解決しました」とだけ書かず、どうやって解決したか他の人に分かるように書いて からトピックを終了して下さい。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
Re: DXライブラリ3Dでのカメラの向きと進む向き
http://dixq.net/g/3d_04.html
のプログラムと でどうですか?
のプログラムと でどうですか?
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 14年前
- 住所: 東海地方
- 連絡を取る:
Re: DXライブラリ3Dでのカメラの向きと進む向き
何度も書いてますがコンパイルの通るコードでお願いしますし、そのコードでうまくいくとは思えません。
もし、自分が過去ログを検索した場合、その様なコードだと不便だと思ったりしますよね? そう思えないようにしないと意味が無いんです。
あとインデントも綺麗だと嬉しいです。
もし、自分が過去ログを検索した場合、その様なコードだと不便だと思ったりしますよね? そう思えないようにしないと意味が無いんです。
あとインデントも綺麗だと嬉しいです。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
Re: DXライブラリ3Dでのカメラの向きと進む向き
rotateは、
値を公式に当てはめるみたいな考えでいいですか?
すみません。
今、PCでコピペをした訳ではなく携帯で投稿したので明日、PCからコピペしてきます。
手書きだと大変なので。
値を公式に当てはめるみたいな考えでいいですか?
すみません。
今、PCでコピペをした訳ではなく携帯で投稿したので明日、PCからコピペしてきます。
手書きだと大変なので。
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 14年前
- 住所: 東海地方
- 連絡を取る:
Re: DXライブラリ3Dでのカメラの向きと進む向き
関数は大抵INPUT/OUTPUTがあります。ptolemy さんが書きました:rotateは、
値を公式に当てはめるみたいな考えでいいですか?
関数の中身を理解しなくてもINPUT/OUTPUTが分かれば利用できます。
「3d.02 カメラを回転してみよう」の説明の中心はrotate関数です。
中身を理解していなくてもrotateの機能や使い方ぐらいは文章から類推できると思ったんですが難しいでしょうか。
そういう事情でしたら、明日お願いします。ptolemy さんが書きました: すみません。
今、PCでコピペをした訳ではなく携帯で投稿したので明日、PCからコピペしてきます。
手書きだと大変なので。
解決しかかっていたので、マズイと思った次第です。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
Re: DXライブラリ3Dでのカメラの向きと進む向き
#include"DXLib.h"
#include<math.h>
#include"keybord.h"
static const float ROTATE_SPEED=DX_PI/90;//回転スピード
void rotate(float *x,float *y,const float ang,float mx,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=20,cameraZ=300,sitenC=230,siten2=150.0f;
float target1X=20,target1Z=0,target2X=20,target2Z=200,angle1X=0.0f,angle1Y=0.0f,target2Y=0.0f;
float speed=1;
float ang;
float X,Y,X2,Y2,X3,Y3;
static int Model;//3Dモデルの読み込み
SetMousePoint(300,200);
Model=MV1LoadModel("パス");
while(ScreenFlip()==0&&ProcessMessage()==0&&ClearDrawScreen()==0){
keybord_Update();
int Mouse=GetMouseInput();
if(Mouse&MOUSE_INPUT_LEFT){
rotate(&cameraX,&cameraZ,-ROTATE_SPEED,target2X,target2Z);
angle1Y-=ROTATE_SPEED;
}
if(Mouse&MOUSE_INPUT_RIGHT){
rotate(&cameraX,&cameraZ,+ROTATE_SPEED,target2X,target2Z);
angle1Y+=ROTATE_SPEED;
}
ang=angle1Y;
SetCameraNearFar(0.1f,1000.0f);//奥行き0.1~1000までをカメラの描画範囲とする。
X=speed*cos(ang);
Y=speed*sin(ang);
X2=speed*sin(ang);
Y2=speed*-cos(ang);
if(keybord_Get(KEY_INPUT_LEFT)>0){
target2X=target2X+X;
target2Z=target2Z-Y;
cameraZ=cameraZ-Y;
cameraX=cameraX+X;
}
if(keybord_Get(KEY_INPUT_DOWN)>0){
target2X=target2X+X2;
target2Z=target2Z-Y2;
cameraZ=cameraZ-Y2;
cameraX=cameraX+X2;
}
if(keybord_Get(KEY_INPUT_UP)>0){
target2X=target2X-X2;
target2Z=target2Z+Y2;
cameraZ=cameraZ+Y2;
cameraX=cameraX-X2;
}
if(keybord_Get(KEY_INPUT_RIGHT)>0){
target2X=target2X-X;
target2Z=target2Z+Y;
cameraZ=cameraZ+Y;
cameraX=cameraX-X;
}
if(keybord_Get(KEY_INPUT_LEFT)>0&&keybord_Get(KEY_INPUT_UP)){
speed=1;
}
if(keybord_Get(KEY_INPUT_LEFT)>0&&keybord_Get(KEY_INPUT_DOWN)){
speed=1;
}
if(keybord_Get(KEY_INPUT_RIGHT)>0&&keybord_Get(KEY_INPUT_UP)){
speed=1;
}
if(keybord_Get(KEY_INPUT_RIGHT)>0&&keybord_Get(KEY_INPUT_DOWN)){
speed=1;
}
//cameraX,sitenC,cameraZの地点からtarget2X,siten2,target2Zのターゲットを見る角度にカメラを設置
SetCameraPositionAndTarget_UpVecY(VGet(cameraX,sitenC,cameraZ),VGet(target2X,siten2,target2Z));
MV1SetPosition(Model,VGet(target2X,target2Y,target2Z));
MV1SetRotationXYZ(Model,VGet(angle1X,angle1Y,0.0f));
}
//3Dモデルの描画
MV1DrawModel(Model);
return 0;
}
________________________________________________________________________
keybord.cpp
#include"DXLib.h"
static int m_Key[256];
void keybord_Update(){
char tmpKey[256];
GetHitKeyStateAll(tmpKey);
for(int i=0;i<256;i++){
if(tmpKey[i]!=0){
m_Key[i]++;
}else{
m_Key[i]=0;
}
}
}
int keybord_Get(int KeyCode){
return m_Key[KeyCode];
}
________________________________________________________________________
keybord.h
#ifndef DEF_KEYBORD_H
#define DEF_KEYBORD_H
void keybord_Update();
int keybord_Get(int KeyCode);
#endif
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 14年前
- 住所: 東海地方
- 連絡を取る:
Re: DXライブラリ3Dでのカメラの向きと進む向き
モデルを指定しても動かないので動作確認したものをお願いします。ptolemy さんが書きました:すみません。
PCからコピペしたので名前が違います。
動いているなら、ソースコードをzip圧縮して掲示板に添付してもらったほうが早いですよ。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 14年前
- 住所: 東海地方
- 連絡を取る:
Re: DXライブラリ3Dでのカメラの向きと進む向き
元々は、このサイトのコードですからね。
添付するのソースコード(.cppと.h)だけでお願いします。
添付するのソースコード(.cppと.h)だけでお願いします。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 14年前
- 住所: 東海地方
- 連絡を取る:
Re: DXライブラリ3Dでのカメラの向きと進む向き
動くことを確認しました。ご協力ありがとうございます。
で、ここからはちゃんと直したほうが良い所です。
・インデントがちゃんとしていないので読みづらいです。
・変数名が不適当なので、何の変数なのか分かりづらい物があります。
・斜めの時はspeedを1にしていると書いてあリましたが、コードを読むと斜めの移動ベクトルを再設定しているコードに成っています。
・play.h player.cppで名前が不統一です。
・player.cppはplayerの処理なのに背景やら敵やらが処理されています。
あと3Dモデルのライセンスを確認して著作権表示が必要ならreadme.txtに記載して添付するようにして下さい。
で、ここからはちゃんと直したほうが良い所です。
・インデントがちゃんとしていないので読みづらいです。
・変数名が不適当なので、何の変数なのか分かりづらい物があります。
・斜めの時はspeedを1にしていると書いてあリましたが、コードを読むと斜めの移動ベクトルを再設定しているコードに成っています。
・play.h player.cppで名前が不統一です。
・player.cppはplayerの処理なのに背景やら敵やらが処理されています。
あと3Dモデルのライセンスを確認して著作権表示が必要ならreadme.txtに記載して添付するようにして下さい。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
Re: DXライブラリ3Dでのカメラの向きと進む向き
指摘された点は、修正しておきます。
斜めについてですが、speed=1にしたと書きましたがその後、再度確認したら微妙に速い気がして再設定しました。
斜めについてですが、speed=1にしたと書きましたがその後、再度確認したら微妙に速い気がして再設定しました。