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


HSPTV!掲示板


未解決 解決 停止 削除要請

2008
0907
ガモウソフトキャラが前後にしか動かない2解決


ガモウソフト

リンク

2008/9/7(Sun) 19:43:28|NO.19119

 こんばんは。今日は 某掲示板で質問しまくって嫌われたので 気を付けなくては…。

http://homepage3.nifty.com/ghpk/e3d/e3d3012.htm
↑このソースを改造して、自機が3軸回転できるようにしたんです。
ですが、その自機が ローカルの上下左右前後に 平行加速できるように 頑張っても、自機が 前後にしか動かないんです。
下に、私が怪しいと感じる部分だけ 載せます。
全ソースは、私のブログ
http://hsp78.seesaa.net/
の最新記事です。


E3DPosForward hsid1, my_forward ; 慣性に従い、前後に移動。
;
E3DRotateQLocalY axisQid, 90 ; ■■■この辺が変だ。
E3DPosForward hsid1, my_right ; 自機を上下左右に平行移動させるために、
E3DRotateQLocalY axisQid, -90 ; 「一度 自機を90°回転させて 前進させ 向きを戻す」
; って やってるんだけど、自機が 前後にしか進まない。
E3DRotateQLocalX axisQid, 90 ; ワールド&ローカル座標の指定を何とかしないと いけないのかなあ?
E3DPosForward hsid1, my_up ; ■■■
E3DRotateQLocalX axisQid, -90 ;

なにか解かりましたら、どうか よろしくお願いします。



この記事に返信する


GENKI

リンク

2008/9/7(Sun) 22:06:33|NO.19125


E3DRotateQLocalY axisQid, 90 ; ■■■この辺が変だ。 E3DPosForward hsid1, my_right ; 自機を上下左右に平行移動させるために、 E3DRotateQLocalY axisQid, -90 ; 「一度 自機を90°回転させて 前進させ 向きを戻す」 ; って やってるんだけど、自機が 前後にしか進まない。 E3DRotateQLocalX axisQid, 90 ; ワールド&ローカル座標の指定を何とかしないと いけないのかなあ? E3DPosForward hsid1, my_up ; ■■■ E3DRotateQLocalX axisQid, -90 ;
ガモウソフトさんの予想通り問題はここです。

E3DRotateQLocalY命令は指定されたクォータニオンIDの中身を書き換えるだけで、実際のモデルには何も影響はありません。
つまりE3DPosForward命令の時点でモデルは回転していません。
クォータニオンIDの内容をモデルに反映させるためにはいったんE3DSetDirQ2命令を実行する必要があります。
こんな感じです。

E3DRotateQLocalY axisQid, 90 ; ■■■この辺が変だ。 E3DSetDirQ2 hsid1, axisQid E3DPosForward hsid1, my_right ; 自機を上下左右に平行移動させるために、 E3DRotateQLocalY axisQid, -90 ; 「一度 自機を90°回転させて 前進させ 向きを戻す」 E3DSetDirQ2 hsid1, axisQid



ガモウソフト

リンク

2008/9/7(Sun) 22:48:32|NO.19132

 う・動いた…!!
左右平行移動するには、

まず、クオータニオンを右に90°ヨーイング(舵きり)。
で、そのクオータニオンを モデルに設定。
モデルを前後に移動。
クオータニオンの向きを戻し、
クオータニオンを モデルに設定。

GENKIさん、本当に ありがとうございます。
頑張ってソフトを完成させたいと思います。



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