はじめに
今回はボールが跳ねる動作を用いて,3Dオブジェクトに音をつける方法を教えて行きたいと思います.以下のような手順で進めて行きたいと思います.サウンドをつける方法だけを知りたい人は,5番だけをみてもらえればいいと思います.
手順
- プロジェクトを立ち上げる
- 床とボールを作る
- ボールに物理法則を適用させる
- 跳ねさせる
- はねる音を追加
1.プロジェクトを立ち上げる
2.床とボールを作る
床の作成
Hierarchyタブの空いている場所を右クリックするとメニューが出てくるので,3D ObjectからPlaneを押す.
Inspectorタブでは,オブジェクトについて,様々な設定ができる.名前を変えたり,座標を決めたり,一番したのAddComponentからコンポーネントを追加する.
ボールの作成
ボールも同様にして,Hierarchyタブを右クリックし,3D ObjectからSpereを押す.
Inspectorタブの内容を写真のようにする.ボールは上から落としたいため,座標を(0,5,0)にしている.
3.ボールに物理法則を適用させる
Hierarchyタブのボールを選択し,.InspectorタブのAddComponentからRigidbodyを選択する.
これで,ボールが自由落下するようになる.
RigidbodyのMassが重さ(kg)を表すので任意の値を入れる.他の値が気になる人は,以下の公式のリンクを見てほしい.
4.跳ねさせる
Assetの空いている場所を右クリックするとメニューが出てくるため,Createから,PhysicMaterialを押す.
追加したPhysicMaterialを選択し,InspectorタブからBouncingの値を0.8にする.この値は反発係数であるため,高いほどよく跳ね返り,低いほど跳ね返りが小さい.
そして,作ったPhysicMaterialを各オブジェクト(ballとfloor)のColliderのMaterialに追加する(写真の青文字の場所).PhysicMaterialを各オブジェクトにドラック&ドロップすることでも追加できる.
5.はねる音をつける
音探し
今回は効果音ラボの生活[3]サッカーボールの跳ねる1を利用した.
利用したい音のファイルをUnityのAssetに追加する.ドラック&ドロップすれば追加できる.
Assetを右クリックして,CreateからC# Scriptを押す.
追加したScriptをVScodeなどのエディターで開く.
今回私は,C# Scriptの名前をSoundOfBound.csとしたため以下のコードを書き込み,保存する.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class SoundOfBound : MonoBehaviour
{
public AudioClip collisionSound; // 再生する音源を設定
private void OnCollisionEnter(Collision collision) {
AudioSource.PlayClipAtPoint(collisionSound, collision.GetContact(0).point);
}
}
そして,このScriptをballのコンポーネントに追加して,変数collisionSoundのところに先ほどの音のファイルを選択する.
違う名前のScriptにしたい場合はpublic class SoundOfBoundのSoundOfBoundを変えればいい.
もし,床にぶつかった時のみ音が鳴るようにしたかったらSoundOfBound2.csのようなif文を書けばいい.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class SoundOfBound2 : MonoBehaviour
{
public AudioClip collisionSound; // 再生する音源を設定
private void OnCollisionEnter(Collision collision) {
if (collision.gameObject.name == "floor")
{
// 指定した音源を再生
AudioSource.PlayClipAtPoint(collisionSound, collision.GetContact(0).point);
}
}
}
以上,最後までお読みいただきありがとうございました!
GitHubのリンク載せておくので,好きなように使ってください!