ここから本文です

解決済みのQ&A

今OpenGLでロケットを作っていてF1キーを押したら1段目が離れるようにする仕組みを...

gozira2591さん

今OpenGLでロケットを作っていてF1キーを押したら1段目が離れるようにする仕組みを作っています。今ここまで行ったのですが、ボタンの定義の仕方がわからなくて困っています(何と書けば・・?)

#include ~の後はこう書いています。
int i;
void polarview(void);
void resetview(void);
unsigned char wireFlag = GL_TRUE;
unsigned char moveFlag = GL_FALSE;/*回転のON/OFF切り替え*/
int xBegin,yBegin;/*ドラッグ開始時点のマウスポインタの座標*/
int mButton;/*ドラッグ時に押されているマウスボタンの判別*/
float distance,twist,elevation,azimuth;/*視点の定義*/
float theta =15.0;

その後・・

void myKbd(unsigned char key,int x,int y)
{
switch(key){
case 'c':
changeColor();
break;
case 'R':
resetview();
break;
case KEY_ESC:
exit(0);
}
glutPostRedisplay();
}

void myMouse(int button,int state,int x,int y)
{
if(state == GLUT_DOWN){
switch(button){
case GLUT_LEFT_BUTTON:
mButton = button;
break;
case GLUT_RIGHT_BUTTON:
mButton = button;
break;

}
xBegin = x; /*ドラッグ開始点のx,y座標値を取得*/
yBegin = y;
}
}
void myMotion( int x, int y)
{
int xDisp, yDisp;

xDisp = x- xBegin; /*マウス移動距離の計算*/
yDisp = y -yBegin;

switch(mButton){
case GLUT_LEFT_BUTTON:/*左ボタンのドラッグで物体の姿勢を変える*/
azimuth += (float)xDisp/2.0;
elevation -=(float)yDisp/2.0;
break;

case GLUT_RIGHT_BUTTON:/*右ボタンのドラッグでズームアウト*/
distance -=(float)yDisp/40.0;
break;
}
xBegin = x;/*次のステップのマウスの出発点*/
yBegin = y;
glutPostRedisplay();/*1ステップ分のドラッグの結果を描画に反映*/
}

と書きました。たぶんこのどこかに埋めるべきなのでは?と推測するのですが、どうやったらいいかがわからず困っています?
どなたかヒントを頂くことはできないでしょうか・・?

一部割愛してすみませんがよろしくお願いします。

この質問は、活躍中のチエリアンに回答をリクエストしました。

  • 質問日時:
    2012/11/4 18:17:45
  • 解決日時:
    2012/11/11 00:16:32
  • 閲覧数:
    278
    回答数:
    1
  • お礼:
    知恵コイン
    500枚

ベストアンサーに選ばれた回答

buynnnmmm1さん

リクエストマッチ!

>gozira2591さん

いろいろなやりかたあると思いますが、

void myKbd(unsigned char key,int x,int y)
関数の中で

case GLUT_KEY_F1:
ロケット切り離しフラグをたてる。
break;


のようなコードを追加して

ロケット切り離しフラグがたつと、ロケット切りはなし処理をするプログラム

を書けばできると思います。


よろしくお願い致します。

Q&Aをキーワードで検索:

総合Q&Aランキング

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。

知恵コレに追加する

閉じる

知恵コレクションをするID/ニックネームを選択し、「追加する」ボタンを押してください。
※知恵コレクションに追加された質問や知恵ノートは選択されたID/ニックネームのMy知恵袋で確認できます。

ほかのID/ニックネームで利用登録する