HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2008
1103
ksmマウスによる視点の移動3解決


ksm

リンク

2008/11/3(Mon) 22:36:16|NO.20608

Easy3Dを使ってFPS(一人称ガンシューティング)を作っています。
マウス操作で視点を動かします。そして持っている武器もその視点にあわせて、動かします。(自分が実際に持っているかのように見せるため)
カメラが回転すると、それに伴い武器もカメラと同じ角度だけ回転するわけです。
マウスの横移動でカメラの向きが変わると武器もその分Y軸を軸として回転させるようにしました。
しかし、マウスを上下移動させたときに カメラは回転するんですが、武器が回転させれません。
そこでいろいろ試してみました。下のスクリプトに試してみた命令を書きました。
どうすれば、マウスを上下に動かしカメラを回転させた時に武器も回転させれるでしょうか。
hsid1は銃の形状識別IDです。

*MouseChk ;マウス操作チェック camdeg_dxz = mouse_sousakando * (before_mx-ginfo_mx) ;前回のマウスカーソル座標と、今回のマウスカーソル座標との距離に応じて、回転角度を求める camdeg_dy = mouse_sousakando * (before_my-ginfo_my) camdegxz-=camdeg_dxz camdegy-=camdeg_dy mouse -1 ;マウスカーソルを消す mouse ginfo_wx1+ginfo_winx/2,ginfo_wy1+ginfo_winy/2 ;ウィンドウのだいたい中心にマウスカーソルを移動させる before_mx=ginfo_mx ;マウスカーソル座標を保存しておく before_my=ginfo_my if( camdegxz > 360.0 ) : camdegxz -= 360.0 if( camdegxz < 0.0 ) : camdegxz += 360.0 ;モデルの向きを変える E3DRotateInit hsid1 E3DRotateY hsid1,camdegxz      ;この行に「E3DRotateX camdegy」と書いたがだめだった *MoveCamera  ;ここからはあまり関係ないとは思うが一応カメラ関係の部分なので。 ;カメラの位置とカメラのターゲット位置設定 E3DSin camdegxz, sinxz E3DCos camdegxz, cosxz E3DSin camdegy, siny E3DCos camdegy, cosy E3DGetPos hsid1, numx,numy,numz camposx = sinxz * cosy * cameradist + numx camposy = eye_y + siny * cameradist + numy camposz = cosxz * cosy * cameradist + numz E3DSetCameraPos camposx, camposy, camposz targetx= sinxz * cosy * cameradist2 + numx targety= eye_y + siny * cameradist2 + numy targetz= cosxz * cosy * cameradist2 + numz E3DSetCameraTarget targetx, targety, targetz, 0.0, 1.0, 0.0 return



この記事に返信する


sei

リンク

2008/11/4(Tue) 00:06:59|NO.20609

カメラと同じ方向へ武器を向かせたい
ということでしょうか?、それでしたら

武器にクォータニオンを設定して
Targetにlookatさせる事でなんとかなりませんでしょうか?
E3DCreateQ
E3DLookAtQ
などです
他にもいくつか方法があるかもしれません。



かってぃんぐ

リンク

2008/11/4(Tue) 01:09:51|NO.20610

はじめましてksmさん^^私もFPSを作成しています。

ご存知でしたら申し訳ないですが「KUSOFPS」
と言うFPSミニゲームを作らせていただきました。

私のぺージでブログではありますが、出来る限り分かりやすくしたつもり
のサンプルを配信中です。こちらは武器はありませんがなにか
ヒントになるかもしれません。
http://doom15.blog.shinobi.jp/Category/30/

seiさんのおっしゃる通り、E3DLookAtQで武器をカメラの注視モデルと
同じモデルに向くようにしています。

たしかにE3DRotateY等だと正面以外で上下を向いた時などに変な
回り方をしますよね。私も前にかなり悩みました。



ksm

リンク

2008/11/4(Tue) 21:23:49|NO.20633

seiさん、かってぃんぐさん、ありがとうございます。
おかげで、問題は解決しました。
感謝しています^^



ONION software Copyright 1997-2021(c) All rights reserved.