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


HSPTV!掲示板


未解決 解決 停止 削除要請

2011
1210
sengokuサウンドを書き込む場所について10解決


sengoku

リンク

2011/12/10(Sat) 01:14:08|NO.43620

前回
E3DLoadSound、音声ファイル読み込んで、
E3DSet3DSoundEmiDist 音が届く範囲を指定。
E3DPlaySound 音を再生。
E3DSet3DSoundListenerMovement、リスナー(耳がある場所)の情報を設定。とりあえず-1にしとけばok。
E3DSet3DSoundMovement 音源の場所を設定。

これで音を出すことができると教えていただき、
いざ自分で作った進むだけのちょっとしたプログラムに音を入れようとしたのですが、うまくいきませんでした。

ちょっとずつ直していきたいので、書き方についてご指摘いただければ光栄です。
まず
  音ファイルの読み込み
mediadir1 = dir_cur + "\\Media\\sound\\bun.wav"
E3DLoadSound mediadir1, soundid1, 1, 1, 5
E3DSet3DSoundEmiDist soundid1, 200.0 ;音の届く距離
startsample = 0
をかいて*mainの中に
    gosub *PlaySound
を作り、
音を繰り返し再生
   *PlaySound
setcnt++
if( setcnt >= 50 ){
E3DPlaySound soundid1, startsample, 0, 0
setcnt = 0
}
リスナーの設定
E3DSet3DSoundListenerMovement -1

; 音源座標の設定
    E3DGetPos これ以降の数値について?
E3DSet3DSoundMovement soundid1, これ以降の数値について?
E3DUpdateSound

どうぞよろしくお願いいたします。



この記事に返信する


sengoku

リンク

2011/12/11(Sun) 01:43:15|NO.43647

いろいろやってみたのですが、
座標設定のところの説明などご指摘いただけなせんでしょうか?
音源座標の設定
E3DGetPos (この部分)指定の仕方が分かりません。
E3DSet3DSoundMovement soundid, 25000, 0.0, 150000, 0,0,0
E3DUpdateSound
なにとぞご教授のほどをよろしくお願いいたしますm−−m



ORZ

リンク

2011/12/11(Sun) 11:19:25|NO.43652

ソースコードは<pre>タグで囲いなさい。
これはただでさえ見難い自分の投稿をせめて誰かに見てもらうための最低限の心意気なので
必ずやること。



sengoku

リンク

2011/12/11(Sun) 14:23:51|NO.43663

お見苦しいところを見せてしまい申し訳ありません。
<pre>をつけるということを初めて知ったので、ご指摘ありがとうございます。
今度ソースを張るときは、<pre>を必ず付けるようします。

<pre>E3DGetPos (この部分)指定の仕方が分かりません。
   E3DSet3DSoundMovement soundid, 25000, 0.0, 150000, 0,0,0
   E3DUpdateSound 
<pre>

こんな感じでしょうか?間違っていたらご指摘お願いします。



check

リンク

2011/12/11(Sun) 14:31:01|NO.43664

あり氏が注意を勧告しているので手短に済ませるが、
最後のpreは/を前に入れる必要がある。
</pre>
こんな感じでな。
HTMLを使ったことがあれば分かると思う。



sengoku

リンク

2011/12/11(Sun) 15:19:54|NO.43666

ご指摘ありがとうございます。

<pre>E3DGetPos (この部分)指定の仕方が分かりません。
   E3DSet3DSoundMovement soundid, 25000, 0.0, 150000, 0,0,0
   E3DUpdateSound 
</pre>

こんな感じでよろしいでようか?



GENKI

リンク

2011/12/11(Sun) 23:01:26|NO.43683

前スレッドとつながりが深いスレなら、前スレのアドレスも書いておくと親切ですよ。
http://hsp.tv/play/pforum.php?mode=all&num=43188



> いざ自分で作った進むだけのちょっとしたプログラムに音を入れようとしたのですが、うまくいきませんでした。

失敗にしろ何にしろどのような反応・結果が得られたのかはその対策のために最も重要な点です。
「何もない」なんて事はあり得ず、「反応が無い」もまた入力に対する結果です。

何をしようと考え、どう行動し、どういう結果を期待し、結果得られた結果が何であったか。
この辺をはっきりさせると回答が得られやすくなりますよ。



> E3DGetPos これ以降の数値について?

参考になるかどうか分かりませんが資料です。
http://homepage3.nifty.com/ghpk/e3d/e3d3010.htm

マニュアル前提でその補足説明を少々。
hsidにはタコさんなどのモデルごとに割り当てられた管理用の番号を指定します。
E3DSigLoadなどで取得できているはずです。

後のposx,posy,poszは数値を受け取るための変数で、E3DGetPos命令を実行するとhsidで指定したモデルが現在表示されている座標が代入されます。


> E3DSet3DSoundMovement soundid1, これ以降の数値について?

この命令では音源(言わばスピーカー)の位置と移動速度を設定しています。
posx,posy,poszには音源が置いてある座標を指定します。
vx,vy,vzは音源の移動速度を指定します。ドップラー効果に影響するだけなので普通は0.0を指定しておいて問題ないでしょう。

つまり…

E3DGetPos hsid3, posx, posy, posz ;目印にキャラクターの位置が音源とします E3DSet3DSoundMovement soundid, posx, posy, posz, 0,0,0
の動作はE3DGetPosでモデルhsid3の今の位置を取得して、取得した場所にスピーカーを設置しているわけです。


> こんな感じでよろしいでようか?

なんといいますか、結果を見ればわかると思います。
掲示板での説明は中々難しいところもありますので、こちらを読んでみてください。
[使い方]
http://hsp.tv/play/pforum.php?mode=about
投稿時の注意の11




普通の人は「半角英数」と言ってもわからないですし、2バイト文字も1バイト文字も同じなんですよね。
HTMLも何それ?って人の方が世間では多いです。
信じられないかもしれませんが事実なんです。



sengoku

リンク

2011/12/12(Mon) 04:43:19|NO.43689

いろいろと無知で申し訳ございません。ご指摘ありがとうございます。

ご指摘していただいた、何をしようと考え、どう行動し、どういう結果を期待し、結果得られた結果が何であったか。
を明確にしたいと思います。

http://hsp.tv/play/pforum.php?mode=all&num=43188

でGENKIさんからのサンプルデータ参考にさせていただき音の部分だけを他のプログラムに入れようと考えました。
現在HSP+Easy3Dで作る3Dアクションゲームを購入させていただき、本に書いてあるサンプルデータにGENKIさんからのサンプルプログラムにあるドップラー効果
があるような音を出せるように試みています。(サンプルデータは購入者ですとp77ページにあたる部分のプログラムになります。)

2011/12/10(Sat)の記事(一番上の質問)に書かせていただきましたプログラムを抜粋させていただき、いろいろと書き加えさせていただきましたが、音はおろか起動しないようななりました。

HSP+Easy3Dで作る3Dアクションゲームの本に書かれたサンプルプログラムに限定はしません
他のプログラムに音(GENKIさんからのサンプルデータにあるようなドップラー効果がある)を出すには、どう書き加えればよろしいでしょうか?

よろしければご回答ご教授のほどをなにとぞよろしくお願いいたします。



GENKI

リンク

2011/12/12(Mon) 21:22:42|NO.43705

ありがとうございます。大分状況がつかめてきました。

E3DLoadSoundなど音ファイルの読み込みはループに入る前ならどこでも構いません。
ただしE3DSet3DSoundEmiDistで音が届く範囲を設定しますので、音源とリスナーの距離を意識して決めてください。

*PlaySoundサブルーチンは、基本的にループ内なららどこでも構いません。
ただしE3DSetCameraDegでカメラの向きを変えている場合、カメラの方向の情報が音に反映されないようです。


症状からの推測ですが、音源とリスナーとの距離が「音が届く範囲」より離れているのではないかな?という気がします。
変数soundid1が別の箇所で既に使われているなど単純ミスとかがなければ、ですが…。
とりあえずE3DSet3DSoundEmiDist命令で最大距離を大きめにしてみるか、音源からリスナーまでの距離を調べるなりしてみるといいかもしれません。



> 他のプログラムに音(GENKIさんからのサンプルデータにあるようなドップラー効果がある)を出すには、どう書き加えればよろしいでしょうか?

ドップラー効果についてはE3DSet3DSoundMovement命令を使用するときに速度(vx,vy,vz)を入力すれば自動的に3Dサウンドに反映されます。
速度を全て0にするとドップラー効果はかかりません。私が提示したものも全て0を設定してるので結果的には無効になっています。
ちなみに、ドップラー効果は多分調整しないと不自然になるかも。調整方法は私もよく知らないので気になるようでしたらおちゃっこ様に聞いてみてください。(E3DSet3DSoundDopplerScaler命令)


> 2011/12/10(Sat)の記事(一番上の質問)に書かせていただきましたプログラムを抜粋させていただき、いろい

特定の書き込みを指し示す場合は、それぞれのレスの右上に書いてある番号を書くとわかりやすいですよ。
「2011/12/10(Sat)の記事」の場合なら「NO.43620」という具合。



おちゃっこ

リンク

2011/12/13(Tue) 08:45:56|NO.43712

ぜんぜん分かっていないようなので
まずはドップラーなしで音を鳴らすことを目標にし
それが出来てから、ドップラー効果を付けるといいでしょう。

起動すらしないということですが
その際に何かエラーメッセージが出たはずです。

エラーメッセージを読みましょう。
そしてE3DGetPosの役割などは関数表を読めば分かることです。
スクリプトエディタで命令を書き、そこでF1キーを押して調べるのが楽でしょう。

ちなみに、これはどんな初心者でも上級者でもするべきことです。



sengoku

リンク

2011/12/19(Mon) 21:49:29|NO.43849

いろいろとご指摘ありがとうございました。
なんとなくできるようになりました。
ご指摘やご教授ありがとうございました。


また、音の再生スピードについて、ご質問させていただきたく思うので、
最初にご指摘いただいた書き方を考慮しながら新しいスレを立てさせていただきた気思います。



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