- 1 名前:名前は開発中のものです。 [2012/01/28(土) 17:15:55.46 ID:Khp0Nc8u]
- 隠蔽がきつい
情報あつめましょう
- 6 名前:名前は開発中のものです。 [2012/01/30(月) 18:19:42.59 ID:RgdOj4ba]
- adddirってregobjでOBJ_MOVEモードを指定しないと反応しないよね
addposは何も指定しなくても反応するが…
- 7 名前:名前は開発中のものです。 [2012/01/30(月) 18:47:08.35 ID:RgdOj4ba]
- addplateで地面をつくろうと思ったら垂直なプレートしか表示できないみたいだ
水平につくりたいならモデリングするべきか
- 8 名前:名前は開発中のものです。 mailto:sage [2012/01/30(月) 19:42:39.16 ID:n/Br4+xO]
- 回転行列指定できないのか
- 9 名前:名前は開発中のものです。 [2012/01/30(月) 20:18:42.51 ID:RgdOj4ba]
- x…右が正
y…下が正 z…手前が正 この座標系なんか変だなw なんでyは上が正でないのか?
- 10 名前:名前は開発中のものです。 [2012/01/31(火) 08:10:43.02 ID:20JLJzd8]
- カメラの方向に対して垂直に左右に動かしたい
ゲームではお馴染みのキー操作なんだけど以下のようにしてみたけどうまくいかない ジグザグな動きになってしまう どうやれば左右に動かせるかな? getang HGOBJ_CAMERA,x,y,z addpos HGOBJ_CAMERA,sin(y+90.0),,cos(y+90.0)
- 11 名前:名前は開発中のものです。 mailto:sage [2012/01/31(火) 13:31:40.40 ID:hSEGJqW5]
- sin,cosには角度をラジアンで指定しなくちゃいけないからじゃないかな?
- 12 名前:名前は開発中のものです。 [2012/01/31(火) 16:37:52.21 ID:yeuM2bWt]
- なるほどラジアンですか
一周が6.2ぐらいなんですよ それで addpos HGOBJ_CAMERA,sin(y+1.5),,cos(y+1.5) とするとマシにはなったけど左右に動かすとジグザクの動きになる ずばり90度のラジアンを指定しないとうまくいかないね ちょっとわからない…
- 13 名前:名前は開発中のものです。 mailto:sage [2012/01/31(火) 16:41:36.45 ID:gI3L3Jlu]
- 3.14 * 2
- 14 名前:名前は開発中のものです。 [2012/01/31(火) 16:47:35.75 ID:yeuM2bWt]
- 90度はπ/2ラジアンだからだいたい1.57ラジアンということで
addpos HGOBJ_CAMERA,sin(y+1.57),,cos(y+1.57) とするとうまくいきました しかしこれで正しいかどうかは疑問
- 15 名前:名前は開発中のものです。 [2012/02/01(水) 04:13:45.79 ID:LKAKhn/+]
- 標準でM_PI,rad2deg(),deg2rad()ってマクロがある
mes M_PI mes rad2deg(1.57) mes rad2deg(atan(1,0)) mes deg2rad(90)
- 16 名前:名前は開発中のものです。 [2012/02/01(水) 05:02:10.29 ID:LKAKhn/+]
- >>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))
- 17 名前:名前は開発中のものです。 mailto:sage [2012/02/01(水) 11:05:07.92 ID:fkrWUMU8]
- >>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 ; イベント設定 }
- 18 名前:名前は開発中のものです。 [2012/02/01(水) 14:21:16.01 ID:LKAKhn/+]
- >>17
regobj apple,mchr,OBJ_MOVE|OBJ_BORDER;リンゴオブジェ作成、自動移動ON | クリップ範囲有効(setborderで設定した範囲より外れると自動削除) getpos mychr,x,y,z;プレイヤーキャラから座標を収得 setpos apple,x,y,z;作成したリンゴオブジェにプレイヤーキャラの座標をセット fvset fv,0,0,0.001*rnd(6282);z軸に0.001*rnd(6282)度(ラジアン単位)セット //fv=0.0, 0.0, 0.001*rnd(6282) ;と同じ事(実際置き換えても動く)だがHSPは64ビット浮動小数点でDirectx8は32ビット浮動小数点」 //後fv系命令で使われる配列は0〜2じゃなく0〜3の4要素( fv(3)には1.0が強制的に代入される ) fvdir fv, 0, -4, 0;Y方向に-4セット(早い話ベクトル)(Z軸が回転させられたX,Y方向がセットされる) seldir apple:objsetfv fv;リンゴオブジェのdir設定を選択:fv(上で回転させたベクトルをリンゴオブジェのdirにセット) //setdir apple, fv.0, fv.1 ,fv.2 ;と同等、実際置き換(ry setevent apple,ev1 ; イベント設定(ev1にはevent_命令で80フレーム後に透明度0%、Z角度を0.2づつ加算する、80フレーム待つが設定されてる) >adddirは弾の発射には使えますね ちょっと言い足りないところがあった adddirは現在オブジェクトのdirに設定されてる値に加算させる命令だから 重ねて使えば加速してく形になる
- 19 名前:名前は開発中のものです。 [2012/02/01(水) 14:28:09.54 ID:LKAKhn/+]
- fvdir fv, 0, -4, 0;Y方向に-4セット(早い話ベクトル)(Z軸が回転させられたX,Y方向がセットされる)
ここのfvは入力と出力両方の役目が有る fvに入ってる角度を元に右側で設定されてる移動量(ベクトル)を回転させる
- 20 名前:名前は開発中のものです。 mailto:sage [2012/02/01(水) 17:55:13.64 ID:EsqbMXNK]
- fvdir fv, -4, 0, 0としても同じになりますよね
単にこのx,yは速度じゃないのかなと…
- 21 名前:名前は開発中のものです。 [2012/02/01(水) 18:09:58.69 ID:LKAKhn/+]
- 同じじゃない
fvdir fv, -4, 0, 0 ならX方向に-4 ただサンプルのはランダム方向に回転してるから見た目じゃ違いが分からないだけ fvset fv,0,0,0.001*rnd(6282) を fvset fv,0,0,0 にして実行してみれば違いが分かる
- 22 名前:名前は開発中のものです。 mailto:sage [2012/02/01(水) 18:43:13.01 ID:EsqbMXNK]
- やってみるとわかりました
fvset fv,0,0,0.001*rnd(6282)でzにセットしたラジアン値で fvdir fv, 0, -4, 0に反映されるというのがわかりにくい
- 23 名前:名前は開発中のものです。 mailto:age [2012/02/04(土) 11:39:59.47 ID:WQ1CSaRD]
- ミサイル発射やってみたんですがどうもうまくいかない
はじめの数発だけは正常に動くけど何回もやると初期位置がおかしくなって動きがおかしくなる 次の弾を発射させるときにadddirを終わらせる必要があるんでしょうね 弾のオブジェクトを消滅させるとか 弾の発生のときにregobjして弾が一定距離を飛んだらdelobjって感じ
- 24 名前:名前は開発中のものです。 [2012/02/04(土) 19:13:16.59 ID:SZwk90F+]
- >>23
adddirは現在のdir値に足してく命令 発射時だけ設定するならsetdir
- 25 名前:名前は開発中のものです。 mailto:sage [2012/02/04(土) 22:33:19.44 ID:kJfk2pwY]
- こんな感じでやったんですが
getpos HGOBJ_CAMERA,cx,cy,cz setpos tama,cx,cy+10,cz adddir tama,-sin(y),,-cos(y) adddirを終了させるのはどうすればいいんでしょうね?
- 26 名前:名前は開発中のものです。 [2012/02/04(土) 23:16:58.61 ID:SZwk90F+]
- だから発射時は
setdir tama,-sin(y),,-cos(y) で良いadd系命令は設定値を足してく命令 単に初期化したいならsetdir objid,0,0,0
- 27 名前:名前は開発中のものです。 mailto:sage [2012/02/05(日) 00:18:29.68 ID:FuTn8hvA]
- setdir objid,0,0,0を追加してみるとadddirがクリアされて
意図通り動きました。 さらに弾を4連射させるのがむずかしい。 tamaのIDを順に変える方法ってありますか?
- 28 名前:名前は開発中のものです。 [2012/02/05(日) 01:37:24.30 ID:shlkc11t]
- adddir tama,-sin(y),,-cos(y)
を setdir tama,-sin(y),,-cos(y) にすれば良いって言ってるのに…… adddirとsetdirは同じ所に設定する命令 加算するか上書きするかの違い だから加速させたいとかが無ければ上書きするsetdirで良い >tamaのIDを順に変える方法ってありますか? 連続でregobjを実行して最初と最後のIDを保存 これが使えるのは一度もobjを削除してない時にしかできない IDが連続して無くても出来るように考えた方が良い regobj var,ModelID,mode,EventID オブジェクトの登録 setcoli id,mygroup,enegroup オブジェクトのコリジョン設定 findobj exmode,group オブジェクト検索 nextobj val 次のオブジェクト検索 この辺を使う setcoliのグループ値(mygroup)は検索対象グループ値になる HSP自体の初心者? それなら標準命令だけで簡単な2Dシューティグを作ってみた方が良い
- 29 名前:名前は開発中のものです。 mailto:sage [2012/02/05(日) 09:21:10.12 ID:TeVrdhcu]
- >>28
ありがとうございます。 なるほど、setdir tama,-sin(y),,-cos(y) でできました。 複数の弾を発射させるにはオブジェクト検索をすればいいわけですね。 これは配列を使ってもできるかなと思ったんですが… tama.0〜tama.3 それと文字列結合もどうかなと "tama"+0〜"tama"+3 hgimg3は初心者ですがHSP歴は長いです。
- 30 名前:名前は開発中のものです。 [2012/02/05(日) 18:17:31.60 ID:shlkc11t]
- >>29
HSP自体は分かるなら配列使っても良いと思うよ 弾最大使用数=4 dim tama,弾最大使用数 if 弾使用中の数 < 弾最大使用数 { regobj tama(弾使用中の数),ModelID,mode,EventID getpos HGOBJ_CAMERA,cx,cy,cz setpos tama(弾使用中の数),cx,cy+10,cz ・ ・ ・ 弾使用中の数+1 } 使用中の弾の様態確認は repeat 弾使用中の数 getpos tama(cnt),bx,by,bz loop 配列使うとobj削除した時とかの配列管理も必要になるから面倒な気がするが・・・
- 31 名前:名前は開発中のものです。 mailto:sage [2012/02/06(月) 16:42:53.64 ID:0zvPTdFG]
- ありがとうございます。
そもそも配列使わずにID変える方法ってあるんでしょうか? 4連射なら4つのIDが必要になるわけですが サンプルスクリプトのsample\elm2d\sample4.hsp ですが なぜ i だけで複数の弾表示ができるのか疑問に思っています。
- 32 名前:名前は開発中のものです。 [2012/02/06(月) 22:03:47.82 ID:QURb+gp8]
- >>31
だからそれを>>28 で書いたんだが・・・ そしたらあんたが配列使ってできないかって聞いたから>>30 を書いた >なぜ i だけで複数の弾表示ができるのか疑問に思っています。 >>28 でこの辺を使うって書いた命令使われてるだろ ; プレイヤーのミサイル当たり処理 ; findobj 0,COL_SHOT repeat : nextobj i:if i<0 : break getcoli res,i,20.0 *myshot if (myfcnt&15)=0 { regobj i,pchr(myfire),OBJ_MOVE|OBJ_BORDER setpos i,myx,myy,myz setdir i,0,-8,0 setcoli i,COL_SHOT,COL_ENEMY
- 33 名前:名前は開発中のものです。 mailto:sage [2012/02/07(火) 10:19:39.05 ID:EJ8Iltcw]
- う〜ん、すいません当方ちょっと理解できてないです。
このサンプルだと弾の発射の度に i にモデルIDが追加されていくわけですが 上書きされてるのになんで弾が消えないのかなと疑問なんです。
- 34 名前:名前は開発中のものです。 [2012/02/07(火) 21:04:37.19 ID:gGNZz1Vq]
- *myshot
if (myfcnt&15)=0 { /* regobj i,pchr(myfire),OBJ_MOVE|OBJ_BORDER ←ここで毎回現在未使用のIDを収得してる iを毎回使い捨てで使ってるだけ >上書きされてるのになんで弾が消えないのかなと疑問なんです。 何でそれが疑問なのかこっちが聞きたい 毎回違うID使われてるの分かってて何で弾が消えると思うの? 同じIDを使いまわしてるなら飛んでた弾が再度発射されて消えたように見えるなら分かるが・・・
- 35 名前:名前は開発中のものです。 mailto:sage [2012/02/07(火) 21:45:11.11 ID:EJ8Iltcw]
- どうもありがとうごさいます。
このサンプルのとおりやってみたんですがうまくできるんですよね。(笑) ちょっとわかりにくいですが何とかのみこめそうです。
- 36 名前:名前は開発中のものです。 mailto:sage [2012/04/24(火) 07:10:47.93 ID:r44oKlbP]
- ライトオブジェクトってdelobj命令で削除出来ないみたいなんですけど
削除するにはどうしたらいいのでしょうか?
- 37 名前:名前は開発中のものです。 mailto:sage [2012/04/24(火) 09:00:22.18 ID:r44oKlbP]
- >>36ですが勘違いでした。
ゲーム内の初期化の為に、全てのオブジェクトを消すのが目的だったのですが 基本ライトとカメラを削除してしまうと、もう設定を出来なくなってしまうみたいです。
|

|