• 締切済み

今DirectXでゲームを作っているのですが、どうしても実装できないこ

今DirectXでゲームを作っているのですが、どうしても実装できないことがあります。 マウスカーソルの近くにある物体をスピードを落としながら話していくという仕様なのですが、ベクトルを使っての実装ができません。どうかわかる方がいましたら回答お願いします。 pV1.x;//マウスカーソルのx座標 pV1.y;//マウスカーソルのy座標 pV2.x;//物体のx座標 pV2.y;//物体のy座標 pOut1.x;//物体のx座標からマウスカーソルのx座標を引いた値 pOut1.y;//物体のy座標からマウスカーソルのy座標を引いた値 D3DXVec2Subtract(&pOut1,&pV2,&pV1);//pV2ベクトルからpV1ベクトルを引いてpOut1に格納する float VecLength=D3DXVec2Length(&pOut1);//pOut1ベクトルの大きさをVecLengthに格納する vecPosition.x=/*ここがわかりません*/ vecPosition.y=/*ここがわかりません*/

みんなの回答

  • zwi
  • ベストアンサー率56% (730/1282)
回答No.1

>マウスカーソルの近くにある物体をスピードを落としながら話していくという仕様なのですが、ベクトルを使っての実装ができません。どうかわかる方がいましたら回答お願いします。 意味がわかりません。話しが離しの誤字であるとしてもどうしたいのかが伝わってきません。 もう少し具体的にマウスカーソル周辺の物体のベクトルがどう変化するか書き出してください。 1.初期状態のベクトル 2.マウスカーソルとの距離によって変換するベクトルの具体的説明。 3.ベクトルを使わない式なら書けるなら、その式。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • DirectX ~テクスチャに値を書き込む~

    m_pDevice->CreateTexture( 128, 128, 1, 0, D3DFMT_A32B32G32R32F, D3DPOOL_MANAGED, &pTex, NULL ); で生成したテクスチャに浮動小数点の値を 自分で書き込みたいのですが、うまくいきません。 テクスチャのサーフェスをロックしたあと、操作できるようですが・・ ソースコードを記述します。 D3DLOCKED_RECT rect; LPDWORD data; float a = 0.0; float r = 0.56; float g = 0.24; float b = 1.0; /* テクスチャのサーフェスをロック */ surface->LockRect(&rect, NULL, 0); for(int y=128-1; y>=0; y--){ /* 書き込む行の先頭アドレスに移動する */ data = (LPDWORD)((LPBYTE)rect.pBits + rect.Pitch * y); for( int x=0; x<128; x++){ /* カラーデータを書き込む */ *data = ((DWORD)a << 96) | ((DWORD)b << 64) | ((DWORD)g << 32) | ((DWORD)r );     data++; } } スペースで余白を空けることができなくて、少々見にくくなってしまいました。 1つの色につき32bitななので、32bitづつシフトしています。 また、float型は4バイト(32bit)なので間違ってはいないと思うのですが・・。 何かアドバイスできる方はお願い致します。

  • プログラミングによるオセロゲームの作成について

    今オセロゲームをCで作成中なので、先ほども質問したのですが、 http://hp.vector.co.jp/authors/VA015468/platina/algo/2_2.html のサイトのminiMax法の実装法ですと最終的な戻り値は評価値ですよね? 一番いい評価値の場所にコマを置くためには結局そのx.y座標が必要だと思うのですが、どこからそのx.y座標を最終的に得るのでしょうか? ご教授願います

  • キャスト変換について

    VineLinuxでc言語を使って、カメラ画像から取得した物体の座標を別のPCのサーバープログラムにソケット通信で送信したい。 座標の変数がfloat型で格納されていて、そのX値とY値をcharでキャストして一つの変数に繋げてコード化し たいんですが、キャストの段階で数字を文字にできなくて 数字がなにかの文字やコードになってしまうので困ってます。 int x; int y; x = (char)Tbl2[1].X; y = (char)Tbl2[1].Y; printf("j - x=%c y=%c\n",x,y);

  • DirectXのD3DXVECTOR3

    directxでのCDに書いてあるこのソースの一部の事で質問します。 D3DXVECTOR3 mVecDir; mVecDir = D3DXVECTOR3( -0.5f, -0.5f, 1.0f); --------------------------------------------------------------- D3DXVECTOR3をDirectX SDK October 2004で調べたのですが、 typedef struct D3DXVECTOR3 : public D3DVECTOR { public: D3DXVECTOR3() {}; D3DXVECTOR3( CONST FLOAT * ); D3DXVECTOR3( CONST D3DVECTOR& ); D3DXVECTOR3( CONST D3DXFLOAT16 * ); D3DXVECTOR3( FLOAT x, FLOAT y, FLOAT z ); // 型変換 operator FLOAT* (); operator CONST FLOAT* () const; // 代入演算子 D3DXVECTOR3& operator += ( CONST D3DXVECTOR3& ); D3DXVECTOR3& operator -= ( CONST D3DXVECTOR3& ); D3DXVECTOR3& operator *= ( FLOAT ); D3DXVECTOR3& operator /= ( FLOAT ); // 単項演算子 D3DXVECTOR3 operator + () const; D3DXVECTOR3 operator - () const; // 2 項演算子 D3DXVECTOR3 operator + ( CONST D3DXVECTOR3& ) const; D3DXVECTOR3 operator - ( CONST D3DXVECTOR3& ) const; D3DXVECTOR3 operator * ( FLOAT ) const; D3DXVECTOR3 operator / ( FLOAT ) const; friend D3DXVECTOR3 operator * ( FLOAT, CONST struct D3DXVECTOR3& ); BOOL operator == ( CONST D3DXVECTOR3& ) const; BOOL operator != ( CONST D3DXVECTOR3& ) const; } D3DXVECTOR3, *LPD3DXVECTOR3; これを自分が見た限り、戻り値がないと思います。 何故、mVecDir = D3DXVECTOR3( -0.5f, -0.5f, 1.0f);のD3DXVECTOR3は戻り値があるのでしょうか? ちなみに、質問のソース2行はD3DXVECTOR3 mVecDir( -0.5f, -0.5f, 1.0f);でもOKですよね? よろしくお願いします。

  • directXで画像表示

    512×512の画像を一点ずつImage[x][y]の配列に格納したものを表示させたいんですけれど、Imaga[x][y]からdirectXへ値を渡し、描画するっていうところがわかりません。ここができれば表示はできると思うんですけれどどうでしょうか。よろしくお願いします。

  • DirectXにおける2Dと3Dの座標の違い

    DirectXを使ったプログラミングの初心者で、Softbank Creativeの「シューティングゲームプログラミング」を使って勉強しています。 ライブラリの内容も関わってくるので少し分かりづらい質問ですが、2Dと3Dとで座標の指定の仕方が違うのがよく分かりません。 3Dでは、 D3DXMATRIX mat_view; D3DXVECTOR3 vec_from=D3DXVECTOR3(0, 100, 0); D3DXVECTOR3 vec_lookat=D3DXVECTOR3(0, 0, 0); D3DXVECTOR3 vec_up=D3DXVECTOR3(0, 0, 1); D3DXMatrixLookAtLH(&mat_view, &vec_from, &vec_lookat, &vec_up); device->SetTransform(D3DTS_VIEW, &mat_view); D3DXMatrixOrthoLH(&mat_proj, 120, 90, 1, 1000); device->SetTransform(D3DTS_PROJECTION, &mat_proj); Graphics->SetLight(0, D3DLIGHT_DIRECTIONAL, -1.0f, -1.0f, -1.0f, 1000); このあたりでカメラを設定し、画面端のx座標が±0.6になる……といったことを決めていましたが、 2Dでは VERTEX vertex[4]={ {x, y, z, 1, diffuse, u, v}, {x, y+dy, z, 1, diffuse, u, v+dv}, {x+dx, y, z, 1, diffuse, u+du, v}, {x+dx, y+dy, z, 1, diffuse, u+du, v+dv} }; device->SetFVF(D3DFVF_VERTEX); device->DrawPrimitiveUP(D3DPT_TRIANGLESTRIP, 2, vertex, sizeof(VERTEX)); 例えば四角形ポリゴンを描くときにこんな風に記述して、 このx,yにはウィンドウの座標が入っています。 SETFVFでD3DFVF_XYZRHWを設定することで直接2Dに持ってこれる、というようなことが調べて分かったのですが、 三角形ポリゴンにテクスチャを貼り付けて2Dのような表現をする場合、必ずこのようにウィンドウに合わせた座標になる(する?)のでしょうか? つまり、3Dの時のように左端がx=-0.6……というような座標系で表現できないのでしょうか? 書籍には3Dから2Dに変換する式などがありましたが、このような変換をいちいち行わなくても最初から3Dの座標に2Dのものを表示できないのでしょうか? なにぶん初心者で見当外れのことを言っているかも知れませんが、ご教授をお願いいたします。

  • キーボードでポインタの位置を決める

    C言語を用いて、プログラミングを行っています。 マウスのように、キーボードで x, y座標を入力し、 その座標にカーソルが移動するようにしたいのですが、 座標情報をどのように処理すれば、カーソルの位置が移動してくれるのかわかりません。 恐れ入りますが、どなたかご教授いただけないでしょうか。

  • Java:配列に配列を格納する方法

    Javaの配列について質問です。 配列の各要素に別の配列を格納するような配列を作成したいのですが、 上手く行かなくて困っています。 float型の配列circle    {x座標,y座標,x方向の速さ,y方向の速さ} を要素に持つcirclesという配列を作りたいと思っています。 例えば circles[0]には{0,0,10,10} circles[1]には{3,3,10,10} circleは1つ1つの円のパラメータ、 circlesにはその円をそれぞれ格納したいと思っています。 下記の様に定義しようとしたのですが、circleが型に解決出来ませんと エラーが出てしまいます。 どうすれば良いのか解らず、困っています。 どなたか正しい書き方を教えて下さい。 宜しくお願いいたします。 ----------------------------------------------------------- //float型の要素を持つ配列circle //{x座標,y座標,x方向の速さ,y方向の速さ} float[] circle; //各球のオブジェクトを入れておく為の配列circles //各要素はcircle型 circle circles[]; circles = new circle[10]; //circlesの各要素に各々newしたcircle配列を入れてやる。 circles[0] = new circle[4]; circles[1] = new circle[4];

    • ベストアンサー
    • Java
  • DirectX png画像でx軸回転について

    D3DXCreateTextureFromFile関数でpng画像を読み込んで、LPD3DXSPRITEのスプライト機能で描画しています。 float rad += 0.005f;という感じでラジアン値を変えつつ回転の様子を調べているのですが、どうも予想通りに動いてくれません。 D3DXMatrixRotationZでz軸回転させると、一定間隔でくるくる回ってくれて、これは予想通りです。 しかしD3DXMatrixRotationXでx軸回転させようとすると、一瞬で画像が縮んでしばらく消えてから、また一瞬の内に伸びて縮んでしばらく消える、という事の繰り返しになります。 なぜx軸(y軸もですけど)の時だと、上手く回転してくれないのでしょう? そして、どのように値を与えれば、一定間隔でくるくる回ってくれるようになるのでしょうか? どうかよろしくお願いします。

  • DirectXの2Dポリゴン描画について

    XP SP2 VC++6.0で、DirectX9.0を、本を見ながら勉強しております。 レベルは初心です。宜しくお願い致します。 2Dポリゴンの頂点フォーマットにおいて、 struct TLVERTEX { float x,y,z; float rhw; D3DCOLOR color; float tu,tv; }; #define FVF_TLVERTEX(D3DFVF_XYZRHW|D3DFVF_DIFFUSE|D3DFVF_TEX1) と記載があります。 が、define以下が何を意味しているのか分かりません。 defineの使い方もざっと調べてみたのですが、自力で解決出来ませんでした。 のちにSetFVF関数の引数としてこの変数(FVF_TLVERTEX)を使うのですが、その意味も良く分かりません。 どなたか、教えて頂けないでしょうか? ソースを提示すれば話は早いのですが、本に書いてある内容なのでここにソースを載せていいかどうか分かりません。 以上宜しくお願い致します。