講師: hantabaru1014さん

2023-03-31 12.50.41.jpg

Untitled

マレット(棒)の先端がキューブに触れている間、音が鳴る楽器 これの、当たり判定の部分を作る

<aside> 💡 今回はMultiAudioClipPlayerコンポーネントとAudioOutputコンポーネントによって音が鳴る仕組みになっている MultiAudioClipPlayerコンポーネントは、Tracksに登録されているClipが合成された音が常になる仕組み 今回は、キューブがマレットに触れている間、そのClipのVolumeを1にすること音を鳴らしている 音を鳴らすにはAudioOutputコンポーネントが必要だが、ワールドに64コしか同時に音が鳴らせない制約があるので、このようにAudioOutputコンポーネントの数を節約する工夫が必要

Untitled

</aside>

<aside> 💡

SineWaveClipコンポーネント サイン波の音を発生させる Frequencyに周波数(Hz)を指定する

Untitled

</aside>

<aside> 💡 ValueCopy<T>コンポーネント Sourceに指定した値をTargetにドライブする BooleanValueDriver<T>コンポーネント StateによってFalseValueまたはTrueValueの値をTargetFieldにドライブする 今回の場合、PlayスロットのActiveがBooleanValueDriver<float>のStateにドライブされる Stateの値によって、SoundsスロットのMultiAudioClipPlayerコンポーネントのTracksの0番目のVolumeに0または1の値がドライブされる つまり、Playスロットがアクティブ状態なら音が鳴る、という仕組み

Untitled

</aside>

マレットに子スロットを作成する

名前を「LogiX」にする

Untitled

OnCollisionStartノード(Physics)を作成する

OnCollisionEndノード(Physics)を作成する

Untitled

Untitled

Untitled

<aside> 💡 OnCollision系のノードは、当たる側と当たった側それぞれにColliderが必要 加えて、どちらかのColliderのTypeがStatic以外である必要がある(Staticは当たり判定の処理をおこなわないので軽量) 当たり判定の処理は重いので、今回はキューブに比べて数が少ないマレットの方をActiveにしている

Untitled

</aside>

Untitled

マレット/SphereスロットのSphereColliderコンポーネントのインターフェースノードを出す

OnCollisionStartノードとつなぐ

Untitled

GetSlotノード(Slots)を作成する