HSPで3Dゲーム 【hgimg3編】
■ このスレッドは過去ログ倉庫に格納されています
hgimg3を触っててわからないのがベクトル関連の命令 fvaddやfvdirなんだけど fvaddとaddposはどう違うんでしょう? あっちでhgimg3の話題禁止ってワケじゃないんだから わざわざスレ立てる必要なかったんでは? ただでさえ情報少ないんだから、絞り込むのも悪くないのでは あっちは割と関係ない話ばっかりになっちゃってるし adddirってregobjでOBJ_MOVEモードを指定しないと反応しないよね addposは何も指定しなくても反応するが… addplateで地面をつくろうと思ったら垂直なプレートしか表示できないみたいだ 水平につくりたいならモデリングするべきか x…右が正 y…下が正 z…手前が正 この座標系なんか変だなw なんでyは上が正でないのか? カメラの方向に対して垂直に左右に動かしたい ゲームではお馴染みのキー操作なんだけど以下のようにしてみたけどうまくいかない ジグザグな動きになってしまう どうやれば左右に動かせるかな? getang HGOBJ_CAMERA,x,y,z addpos HGOBJ_CAMERA,sin(y+90.0),,cos(y+90.0) sin,cosには角度をラジアンで指定しなくちゃいけないからじゃないかな? なるほどラジアンですか 一周が6.2ぐらいなんですよ それで addpos HGOBJ_CAMERA,sin(y+1.5),,cos(y+1.5) とするとマシにはなったけど左右に動かすとジグザクの動きになる ずばり90度のラジアンを指定しないとうまくいかないね ちょっとわからない… 90度はπ/2ラジアンだからだいたい1.57ラジアンということで addpos HGOBJ_CAMERA,sin(y+1.57),,cos(y+1.57) とするとうまくいきました しかしこれで正しいかどうかは疑問 標準でM_PI,rad2deg(),deg2rad()ってマクロがある mes M_PI mes rad2deg(1.57) mes rad2deg(atan(1,0)) mes deg2rad(90) >>6 ん? adddirは一度設定すれば常に加算される 弾なんかは発射時に設定すればいいだけ addposは実行時だけだから毎回実行する必要がある >>7 回転させれば良いだけじゃ? >>2 fvaddはfv配列に対しての加算命令 addposはオブジャクト座標に対して直接加算する 単に使いどころが違うだけで計算結果は同じはず fvdirは指定した座標を回転させる命令 #include "hgimg3.as" fvset fv,0.0,deg2rad(45),0;fvにY軸を45度回転設定 fvdir fv,100,0,0;X方向100を回転してfvに代入 title "X="+fv+" Y="+fv.1+" Z="+fv.2+" 角度="+rad2deg(atan(fv.2,fv)) >>15 >>16 ありがとうごさいます adddirは弾の発射には使えますね fv配列は未だによくわからないです サンプルに入っているtest6.hspも何をやっているのかわかりませんね if k&16 { ; リンゴ発射 regobj apple,mchr,OBJ_MOVE|OBJ_BORDER getpos mychr,x,y,z setpos apple,x,y,z fvset fv,0,0,0.001*rnd(6282) fvdir fv, 0, -4, 0 seldir apple:objsetfv fv setevent apple,ev1 ; イベント設定 } ■ このスレッドは過去ログ倉庫に格納されています
read.cgi ver 07.5.1 2024/04/28 Walang Kapalit ★ | Donguri System Team 5ちゃんねる