この記事は、Godot Engineでプレイヤーキャラが移動すると
足音を鳴らす演出を実装する方法について説明をします。
※見下ろし型(Top-down)のゲームでの実装です。
【環境】
- Godotのバージョン:3.5.2
- コンピュータのOS:Windows11
準備
足音の準備
プレイヤーが移動する時に鳴る足音のオーディオファイルを準備します。
素材は、効果音の素材サイトからダウンロードします。
利用規約を必ず読み、その素材が加工可能であるか確認しましょう。
足音のオーディオファイルを見つけたら、波形編集ソフトで編集します。
個人的におすすめの波形編集ソフトは、
「ocenaudio」
▲使用する波形を範囲指定して刈り込む。
- 範囲指定する時
AnimationPlayer
ノードにある「歩く時のアニメ」を確認して、
歩行中に、もう片方の足が地面に付く時のタイミングを計算します。
タイミングが0.4秒であれば、
音の長さが400msになるよう刈り込みます。
使用するオーディオファイルとして、「footsteps.wav」と
名前を付けて保存します。
ノード作成
子ノード追加
Playerシーンに子ノード2種類を追加します。
AudioStreamPlayer
とTimer
です。
▲分かりやすいように名前を変えても結構です。
AudioStreamPlayer
追加したノードAudioStreamPlayer
を選択し、
右のインスペクターにて、先ほど作成した足音のオーディオファイルを
Streamに読み込みます。
下のVolume dBを-10に変更します。
この数値は目安ですので、丁度いい音量で調整しても構いません。
Timer
追加したノードTimer
を選択し、
右のインスペクターにて、One Shotにチェックを入れます。
One Shotをオンにすることで、タイマーが0になった場合、
止まることができます。
オフになっていると、ループする状態になります。
スクリプト追加
プレイヤーキャラのシーンにアタッチしたスクリプト内に、
以下のスクリプトを追加します。
func player_footsteps_pitchchange():
if $Timer.time_left <= 0: # Timerが0以下になった場合
$AudioStreamPlayer.pitch_scale = rand_range(0.8, 1.2) # ピッチスケールを乱数で調整
$Timer.start(0.4) # 0.4秒間でタイマースタート
足音のピッチスケールを0.4秒間毎に乱数で調整することで、
足音がリアルに聞こえるようになります。
func player_footsteps_soundplay():
$AudioStreamPlayer.play() # 足音再生
func player_footsteps_soundstop():
$AudioStreamPlayer.stop() # 足音停止
足音の再生や停止も忘れないように。
先ほど追加したスクリプトを呼び出します。
if(move_input != Vector2.ZERO):
など、
プレイヤーが移動した場合のブロック内に、以下の関数を追加します。
player_footsteps_pitchchange()
プレイヤーが移動して0.4秒間毎に
足音のピッチスケールが変わるようになりますが、
肝心の足音再生と停止がありません。
足音再生と停止は、次のAnimationPlayer
ノードで使用します。
トラック内に関数追加
プレイヤーの静止または歩行時など、
アニメーションを制御するノードAnimationPlayer
にて、
足音の再生や停止の処理を追加します。
まずは、プレイヤー移動時のアニメーションを選択して、
▲「メソッド呼び出しトラック」を追加します。
次はアニメーション化されるノードを選択で、
▲スクリプトをアタッチしたノードを選択します。
Playerの関数のトラックが追加されます。
Timeの0.0秒に合わせて右クリックを押して、
「キーを挿入」で、
▲先ほど追加したスクリプトを選択します。
トラック内に、
先ほど追加した関数が入ります。
今回作成した足音オーディオファイルの長さが0.4秒なので、
Timerの0.4秒に合わせてキーを挿入します。
他の向きのアニメーションにもトラック追加を行います。
足音をいつまでも鳴らすわけにはいかないので、
静止時のアニメーションにも、足音停止の関数を挿入します。
そうすると、動きが止まった時に足音を停止してくれます。
おわりに
以上で、足音を鳴らす演出を実装する方法について説明を終わります。
今回は足音1種類だけの説明でしたが、
他にも別の足音に変える方法や、
特定のエリア内に入ることで足音が変わる処理などをお話したいのですが、
長くなってしまうので、この辺にしときます。
最後に、GodotEngineで足音の実装に関する動画を
Youtubeに投稿した方々に感謝します。
参考動画
Realistic and simple footsteps in Godot (2D/3D)
Creating Footstep Sounds for Your Game (Godot + Audacity)