summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authoryum <yum.food.vr@gmail.com>2023-08-30 17:13:19 -0700
committeryum <yum.food.vr@gmail.com>2023-08-30 17:13:19 -0700
commit358f3ed8c44bbe45d8f4546afeeb0afaae85ea8b (patch)
treebb49a94c72668aff16b104de089a3c90436e67ac
parent444914a701628ca2d1937f8d5cc9a714b478917c (diff)
Continue work on in-game audio, revert steamvr.py
We now play arpeggiated *chords* of vowels instead of one, allowing for a denser audio feedback mechanism.
-rw-r--r--Scripts/libtastt.py181
-rw-r--r--Scripts/libunity.py7
-rw-r--r--Scripts/osc_ctrl.py12
-rw-r--r--Scripts/steamvr.py156
-rw-r--r--Sounds/aiueo/a.wavbin79406 -> 38654 bytes
-rw-r--r--Sounds/aiueo/e.wavbin79406 -> 38654 bytes
-rw-r--r--Sounds/aiueo/i.wavbin79406 -> 38654 bytes
-rw-r--r--Sounds/aiueo/o.wavbin79406 -> 38654 bytes
-rw-r--r--Sounds/aiueo/play.py9
-rw-r--r--Sounds/aiueo/u.wavbin79406 -> 38654 bytes
-rw-r--r--UnityAssets/World Constraint.prefab472
11 files changed, 471 insertions, 366 deletions
diff --git a/Scripts/libtastt.py b/Scripts/libtastt.py
index 12f9056..c8d3958 100644
--- a/Scripts/libtastt.py
+++ b/Scripts/libtastt.py
@@ -1,6 +1,7 @@
#!/usr/bin/env python3
import argparse
+import array
import generate_utils
import libunity
import os
@@ -220,7 +221,7 @@ AnimationClip:
m_Level: 0
m_CycleOffset: 0
m_HasAdditiveReferencePose: 0
- m_LoopTime: 1
+ m_LoopTime: 0
m_LoopBlend: 0
m_LoopBlendOrientation: 0
m_LoopBlendPositionY: 0
@@ -472,9 +473,14 @@ def generateClearAnimation(anim_dir, guid_map):
guid_map[anim_path] = meta.guid
guid_map[meta.guid] = anim_path
+# sound_chord: whether to play a, e, i, o, u
# value: 0 or 1
-def generateSoundAnimation(nth_sound: int, value: int, anim_name: str, anim_dir: str, guid_map: typing.Dict[str, str]):
- print(f"Generating sound {nth_sound} animation", file=sys.stderr)
+def generateSoundAnimation(sound_chord: typing.Tuple[int,int,int,int,int],
+ value: int,
+ anim_name: str,
+ anim_dir: str, guid_map: typing.Dict[str, str],
+ anim_delay_frames = 2):
+ print(f"Generating sound animation {sound_chord} / {anim_name}", file=sys.stderr)
parser = libunity.UnityParser()
parser.parse(SOUND_ANIMATION_TEMPLATE)
@@ -485,17 +491,36 @@ def generateSoundAnimation(nth_sound: int, value: int, anim_name: str, anim_dir:
anim_clip.mapping['m_FloatCurves'].sequence = []
anim_clip.mapping['m_EditorCurves'].sequence = []
- curve = curve_template.copy()
- for keyframe in curve.mapping['curve'].mapping['m_Curve'].sequence:
- keyframe.mapping['value'] = str(value)
- curve.mapping['path'] = f"World Constraint/Container/TaSTT/Audio {nth_sound}"
- # Add curve to animation
- anim_clip.mapping['m_FloatCurves'].sequence.append(curve)
- anim_clip.mapping['m_EditorCurves'].sequence.append(curve)
+ # Animate all notes.
+ for note_i in range(len(sound_chord)):
+ curve = curve_template.copy()
+
+ keyframe_template = curve.mapping['curve'].mapping['m_Curve'].sequence[0]
+ curve.mapping['curve'].mapping['m_Curve'].sequence = []
+
+ # First keyframe: zero all but first note
+ if note_i != 0:
+ keyframe = keyframe_template.copy()
+ keyframe.mapping['time'] = 0
+ keyframe.mapping['value'] = 0
+ curve.mapping['path'] = f"World Constraint/Container/TaSTT/Audio {note_i + 1}"
+ curve.mapping['curve'].mapping['m_Curve'].sequence.append(keyframe)
+
+ # Subsequent keyframes: animate as normal
+ keyframe = keyframe_template.copy()
+ keyframe.mapping['time']= str(note_i * anim_delay_frames * 1.0 / 60.0)
+ keyframe.mapping['value'] = str(sound_chord[note_i])
+ curve.mapping['path'] = f"World Constraint/Container/TaSTT/Audio {note_i + 1}"
+ curve.mapping['curve'].mapping['m_Curve'].sequence.append(keyframe)
+
+ # Add curve to animation
+ anim_clip.mapping['m_FloatCurves'].sequence.append(curve)
+ anim_clip.mapping['m_EditorCurves'].sequence.append(curve)
+
+ anim_clip.mapping['m_AnimationClipSettings'].mapping['m_StopTime'] = str((len(sound_chord)-1) * anim_delay_frames * 1.0 / 60.0)
# Serialize animation to file
anim_path = os.path.join(anim_dir, anim_name + ".anim")
- print("Generating sound animation at {}".format(anim_path), file=sys.stderr)
with open(anim_path, "w", encoding="utf-8") as f:
f.write(libunity.unityYamlToString([anim_node]))
# Generate metadata
@@ -598,11 +623,14 @@ def generateScaleAnimation(anim_name: str, anim_dir: str,
def generateAnimations(anim_dir, guid_map):
generateClearAnimation(anim_dir, guid_map)
- for i in range(5):
- anim_name = generate_utils.getSoundParam(i+1) + "_Off"
- generateSoundAnimation(i+1, 0, anim_name, anim_dir, guid_map)
- anim_name = generate_utils.getSoundParam(i+1) + "_On"
- generateSoundAnimation(i+1, 1, anim_name, anim_dir, guid_map)
+ for chord_bits in range(2**5):
+ chord = [0, 0, 0, 0, 0]
+ for i in range(5):
+ if (chord_bits >> i) % 2 == 1:
+ chord[i] = 1
+ print(f"Generating chord {chord}", file=sys.stderr)
+ anim_name = f"Sound_a{chord[0]}_e{chord[1]}_i{chord[2]}_o{chord[3]}_u{chord[4]}"
+ generateSoundAnimation(chord, 0, anim_name, anim_dir, guid_map)
print("Generating letter animations", file=sys.stderr)
@@ -809,6 +837,117 @@ def generateScaleLayer(anim: libunity.UnityAnimator,
pass
+def generateSoundLayer(anim: libunity.UnityAnimator,
+ gen_anim_dir: str,
+ guid_map: typing.Dict[str, str],
+ anim_len_s = 12.0/60.0):
+
+ layer = anim.addLayer("TaSTT_Sound")
+
+ # Create `a` state.
+ a_state = anim.addAnimatorState(layer, "a", is_default_state=True)
+
+ for a_bool in range(2):
+ dy = 100
+ dx = a_bool * 800
+ # Create `e` state.
+ ax_e_state = anim.addAnimatorState(layer,
+ f"a{a_bool}_e",
+ dy=dy, dx=dx)
+ # Create transition based on whether `a` is set.
+ trans = anim.addTransition(ax_e_state)
+ param = generate_utils.getSoundParam(1)
+ anim.addTransitionBooleanCondition(a_state, trans, param, a_bool)
+
+ for e_bool in range(2):
+ dy = 200
+ dx = a_bool * 800 + e_bool * 400
+
+ # Create `i` state.
+ ax_ex_i_state = anim.addAnimatorState(layer,
+ f"a{a_bool}_e{e_bool}_i",
+ dy=dy, dx=dx)
+
+ # Create transition based on whether `e` is set.
+ trans = anim.addTransition(ax_ex_i_state)
+ param = generate_utils.getSoundParam(2)
+ anim.addTransitionBooleanCondition(ax_e_state, trans, param, e_bool)
+
+ for i_bool in range(2):
+ dy = 300
+ dx = a_bool * 800 + e_bool * 400 + i_bool * 200
+
+ # Create `o` state.
+ ax_ex_ix_o_state = anim.addAnimatorState(layer,
+ f"a{a_bool}_e{e_bool}_i{i_bool}_o",
+ dy=dy, dx=dx)
+ # Create transition based on whether `i` is set.
+ trans = anim.addTransition(ax_ex_ix_o_state)
+ param = generate_utils.getSoundParam(3)
+ anim.addTransitionBooleanCondition(ax_ex_i_state, trans, param, i_bool)
+
+ for o_bool in range(2):
+ dy = 400
+ dx = a_bool * 800 + e_bool * 400 + i_bool * 200 + o_bool * 100
+
+ # Create `u` state.
+ ax_ex_ix_ox_u_state = anim.addAnimatorState(layer,
+ f"a{a_bool}_e{e_bool}_i{i_bool}_o{o_bool}_u",
+ dy=dy, dx=dx)
+ # Create transition based on whether `o` is set.
+ trans = anim.addTransition(ax_ex_ix_ox_u_state)
+ param = generate_utils.getSoundParam(4)
+ anim.addTransitionBooleanCondition(ax_ex_ix_o_state,
+ trans, param, o_bool)
+
+ for u_bool in range(2):
+ dy = 500
+ dx = a_bool * 800 + e_bool * 400 + i_bool * 200 + o_bool * 100 + u_bool * 50
+ if u_bool == 1:
+ dy = 550
+
+ # Create `u` state.
+ ax_ex_ix_ox_ux_state = anim.addAnimatorState(layer,
+ f"a{a_bool}_e{e_bool}_i{i_bool}_o{o_bool}_u{u_bool}",
+ dy=dy, dx=dx)
+ # Create transition based on whether `u` is set.
+ trans = anim.addTransition(ax_ex_ix_ox_ux_state)
+ param = generate_utils.getSoundParam(5)
+ anim.addTransitionBooleanCondition(ax_ex_ix_ox_u_state,
+ trans, param, u_bool)
+
+ chord = [a_bool, e_bool, i_bool, o_bool, u_bool]
+ anim_name = f"Sound_a{chord[0]}_e{chord[1]}_i{chord[2]}_o{chord[3]}_u{chord[4]}"
+ anim_path = os.path.join(gen_anim_dir, anim_name + ".anim")
+ anim_guid = guid_map[anim_path]
+ anim.setAnimatorStateAnimation(ax_ex_ix_ox_ux_state, anim_guid)
+
+ # Create return-home transitions.
+ trans = anim.addTransition(a_state, dur_s = anim_len_s)
+ trans.mapping['AnimatorStateTransition'].mapping['m_InterruptionSource'] = '0'
+ param = generate_utils.getSoundParam(1)
+ anim.addTransitionBooleanCondition(ax_ex_ix_ox_ux_state, trans, param, 1 - a_bool)
+
+ trans = anim.addTransition(a_state, dur_s = anim_len_s)
+ trans.mapping['AnimatorStateTransition'].mapping['m_InterruptionSource'] = '0'
+ param = generate_utils.getSoundParam(2)
+ anim.addTransitionBooleanCondition(ax_ex_ix_ox_ux_state, trans, param, 1 - e_bool)
+
+ trans = anim.addTransition(a_state, dur_s = anim_len_s)
+ trans.mapping['AnimatorStateTransition'].mapping['m_InterruptionSource'] = '0'
+ param = generate_utils.getSoundParam(3)
+ anim.addTransitionBooleanCondition(ax_ex_ix_ox_ux_state, trans, param, 1 - i_bool)
+
+ trans = anim.addTransition(a_state, dur_s = anim_len_s)
+ trans.mapping['AnimatorStateTransition'].mapping['m_InterruptionSource'] = '0'
+ param = generate_utils.getSoundParam(4)
+ anim.addTransitionBooleanCondition(ax_ex_ix_ox_ux_state, trans, param, 1 - o_bool)
+
+ trans = anim.addTransition(a_state, dur_s = anim_len_s)
+ trans.mapping['AnimatorStateTransition'].mapping['m_InterruptionSource'] = '0'
+ param = generate_utils.getSoundParam(5)
+ anim.addTransitionBooleanCondition(ax_ex_ix_ox_ux_state, trans, param, 1 - u_bool)
+
def generateFX(guid_map, gen_anim_dir):
anim = libunity.UnityAnimator()
@@ -852,16 +991,8 @@ def generateFX(guid_map, gen_anim_dir):
"TaSTT_Emerge_100.anim",
anim, guid_map, 0.5)
- for i in range(5):
- param_name = generate_utils.getSoundParam(i+1)
- generateToggle(f"TaSTT_Audio{i+1}",
- param_name,
- gen_anim_dir,
- param_name + "_Off.anim",
- param_name + "_On.anim",
- anim, guid_map)
-
generateScaleLayer(anim, gen_anim_dir, guid_map)
+ generateSoundLayer(anim, gen_anim_dir, guid_map)
return anim
diff --git a/Scripts/libunity.py b/Scripts/libunity.py
index cd8174d..f79cd6f 100644
--- a/Scripts/libunity.py
+++ b/Scripts/libunity.py
@@ -745,7 +745,7 @@ class UnityAnimator():
node.class_id = "1101"
node.anchor = str(new_id)
state = node.mapping['AnimatorStateTransition']
- state.mapping['m_DstState'].mapping['fileID'] = dst_state.anchor
+ state.mapping['m_DstState'].mapping['fileID'] = copy.copy(dst_state.anchor)
state.mapping['m_TransitionDuration'] = dur_s
self.nodes.append(node)
@@ -908,7 +908,7 @@ class UnityAnimator():
# Register the transition with the `from_state`.
if from_state:
from_state_trans = from_state.mapping['AnimatorState'].mapping['m_Transitions'].addChildMapping()
- from_state_trans.mapping['fileID'] = trans.anchor
+ from_state_trans.mapping['fileID'] = copy.copy(trans.anchor)
def addTransitionIntegerEqualityCondition(self, from_state, trans, param, param_val):
# Populate the transition's condition logic.
@@ -994,7 +994,8 @@ class UnityAnimator():
motion.mapping["guid"] = noop_anim_meta.guid
motion.mapping["type"] = "2"
else:
- print(f"Skipping state {anchor} / {name}")
+ #print(f"Skipping state {anchor} / {name}")
+ pass
def unityYamlToString(nodes):
lines = []
diff --git a/Scripts/osc_ctrl.py b/Scripts/osc_ctrl.py
index ad5667f..413e2ae 100644
--- a/Scripts/osc_ctrl.py
+++ b/Scripts/osc_ctrl.py
@@ -103,18 +103,12 @@ def pageMessage(osc_state: OscState, msg: str, estate: EmotesState) -> bool:
sounds_to_make = set()
letter_i = 1
for letter in ["a", "e", "i", "o", "u"]:
- if letter in msg_slice:
+ if letter in msg_slice.lower():
sounds_to_make.add(letter_i)
letter_i += 1
- if len(sounds_to_make) == 0:
+ if len(sounds_to_make) > 0:
for i in range(5):
- playAudio(osc_state, i+1, False)
- else:
- sound_to_make = random.sample(sounds_to_make, 1)[0]
- for i in range(5):
- if i+1 == sound_to_make:
- # TODO(yum) think about making this probabilistic
- print(f"Playing sound {i+1}")
+ if i+1 in sounds_to_make:
playAudio(osc_state, i+1, True)
else:
playAudio(osc_state, i+1, False)
diff --git a/Scripts/steamvr.py b/Scripts/steamvr.py
index 0f241ca..e0b59e3 100644
--- a/Scripts/steamvr.py
+++ b/Scripts/steamvr.py
@@ -1,109 +1,85 @@
-import openvr
+#!/usr/bin/env python3
+
+# python3 -m pip install openvr
+# License: BSD-3.0 (requires showing notice in binary distributions)
+import openvr as vr
import sys
import time
-import typing
-EVENT_RISING_EDGE = 0
-EVENT_FALLING_EDGE = 1
-EVENT_POSE = 2
+EVENT_NONE = 0
+EVENT_RISING_EDGE = 1
+EVENT_FALLING_EDGE = 2
class InputEvent:
def __init__(self,
- opcode: int,
- pos: typing.Tuple[float,float,float] = None):
+ opcode: int):
self.opcode = opcode
- self.pos = pos
- def __str__(self):
- if self.opcode == EVENT_RISING_EDGE:
- return "EVENT_RISING_EDGE"
- elif self.opcode == EVENT_FALLING_EDGE:
- return "EVENT_FALLING_EDGE"
- elif self.opcode == EVENT_POSE:
- return f"EVENT_POSE: {self.pos}"
+# Checks if the given button on the given controller is pressed.
+def pollButtonPress(
+ hand: str = "right",
+ button: str = "b",
+ ) -> int:
+ hands = {}
+ hands["left"] = vr.TrackedControllerRole_LeftHand
+ hands["right"] = vr.TrackedControllerRole_RightHand
-def pollButtonPress(hand: str = "right", button: str = "b") -> InputEvent:
- openvr.init(openvr.VRApplication_Overlay)
+ buttons = {}
+ buttons["a"] = vr.k_EButton_IndexController_A
+ buttons["b"] = vr.k_EButton_IndexController_B
+ buttons["thumbstick"] = vr.k_EButton_Axis0
- system = openvr.VRSystem()
+ system = None
+ while not system:
+ try:
+ system = vr.init(vr.VRApplication_Background)
+ except Exception as e:
+ print(f"Failed to start steamVR input thread: {repr(e)}", file=sys.stderr)
+ time.sleep(5)
+ last_packet = 0
+ event_high = False
- button_mapping = {
- 'a': k_EButton_Index_Controller_A,
- 'b': k_EButton_Index_Controller_B,
- 'thumbstick': k_EButton_SteamVR_Touchpad,
- }
+ while True:
+ time.sleep(0.01)
- print("SteamVR session created. Listening for controller input...")
+ lh_idx = system.getTrackedDeviceIndexForControllerRole(hand_id)
+ #print("left hand device idx: {}".format(lh_idx))
- while True:
- # Drain input events.
- event = openvr.VREvent_t()
- while system.pollNextEvent(event):
- # Event processing, e.g. button presses, goes here
- if event.eventType == openvr.VREvent_ButtonPress or \
- event.eventType == openvr.VREvent_ButtonUnpress:
- print(f"event.data.controller.button: {event.data.controller.button}")
- continue
- print(f"event: {dir(event)}")
- print(f"event.data: {dir(event.data)}")
- print(f"event.data.controller: {dir(event.data.controller)}")
- print(f"event.data.controller.button: {event.data.controller.button}")
- print(f"event.data.keyboard: {dir(event.data.keyboard)}")
- print(f"event.data.keyboard.cNewInput: {int.from_bytes(event.data.keyboard.cNewInput, byteorder='little')}")
- print(f"event.data.keyboard.uUserValue: {event.data.keyboard.uUserValue}")
- print(f"event.data.mouse: {dir(event.data.mouse)}")
- print(f"event.data.mouse.button: {event.data.mouse.button}")
- print(f"event.data.touchPadMove: {dir(event.data.touchPadMove)}")
- print(f"event.data.touchPadMove.bFingerDown: {event.data.touchPadMove.bFingerDown}")
- is_rising = event.eventType == openvr.VREvent_ButtonPress
- # Check if the intended button is pressed
- if button == 'thumbstick':
- _, controller_state = system.getControllerState(event.trackedDeviceIndex)
- mouse_x = controller_state.rAxis[0].x
- mouse_y = controller_state.rAxis[0].y
- print(f"mouse x/y: {mouse_x}/{mouse_y}")
- print(f"mouse rad: {mouse_x**2 + mouse_y**2}")
- dead_zone_radius = 0.05
- thumbstick_moved = mouse_x**2 + mouse_y**2 > dead_zone_radius**2
- if event.data.controller.button == button_mapping['thumbstick'] and not thumbstick_moved:
- if is_rising:
- yield InputEvent(EVENT_RISING_EDGE)
- else:
- yield InputEvent(EVENT_FALLING_EDGE)
- elif event.data.controller.button == button_mapping[button]:
- if is_rising:
- yield InputEvent(EVENT_RISING_EDGE)
- else:
- yield InputEvent(EVENT_FALLING_EDGE)
- # Check poses.
- # TODO(yum) use this. Thinking about adding gestures: swipe to scale
- # up/down, etc.
- if False:
- poses = (openvr.TrackedDevicePose_t * openvr.k_unMaxTrackedDeviceCount)()
- system.getDeviceToAbsoluteTrackingPose(openvr.TrackingUniverseStanding, 0, poses)
- pose = None
- for i in range(openvr.k_unMaxTrackedDeviceCount):
- if system.getControllerRoleForTrackedDeviceIndex(i) == openvr.TrackedControllerRole_RightHand:
- pose = poses[i]
- if pose and pose.bPoseIsValid:
- position = pose.mDeviceToAbsoluteTracking.m[0][3], \
- pose.mDeviceToAbsoluteTracking.m[1][3], \
- pose.mDeviceToAbsoluteTracking.m[2][3]
- yield InputEvent(EVENT_POSE, pos=position)
+ got_state, state = system.getControllerState(lh_idx)
+ if not got_state:
+ continue
- # Max out a 100 Hz.
- time.sleep(0.01)
+ if state.unPacketNum == last_packet:
+ continue
- openvr.shutdown()
+ # Clicking joysticks and moving joysticks fire the same events. To
+ # differentiate movement from clicking, we create a dead zone: if the event
+ # fires while the stick isn't moved far from center, we assume it's a
+ # click, not movement.
+ dead_zone_radius = 0.7
-if __name__ == "__main__":
- if len(sys.argv) != 3:
- print("Usage: script_name.py [left|right] [a|b|thumbstick]")
- sys.exit(1)
+ button_mask = (1 << button_id)
+ ret = EVENT_NONE
+ if (state.ulButtonPressed & button_mask) != 0 and\
+ (state.rAxis[0].x**2 + state.rAxis[0].y**2 < dead_zone_radius**2):
+ #print("button pressed: %016x" % state.ulButtonPressed)
+ #for i in range(0, 5):
+ # print("axis {} x: {} y: {}".format(i, state.rAxis[i].x, state.rAxis[i].y))
+ if not event_high:
+ yield InputEvent(EVENT_RISING_EDGE)
+ event_high = True
+ elif event_high:
+ event_high = False
+ yield InputEvent(EVENT_FALLING_EDGE)
- hand = sys.argv[1]
- button = sys.argv[2]
- gen = pollButtonPress(hand, button)
+if __name__ == "__main__":
+ gen = pollButtonPress()
while True:
- print(next(gen))
+ time.sleep(0.1)
+
+ event = pollButtonPress(session_state, hand_id = hands["left"], button_id = buttons["joystick"])
+ if event == EVENT_RISING_EDGE:
+ print("rising edge")
+ elif event == EVENT_FALLING_EDGE:
+ print("falling edge")
diff --git a/Sounds/aiueo/a.wav b/Sounds/aiueo/a.wav
index 97fd2ab..06aabc6 100644
--- a/Sounds/aiueo/a.wav
+++ b/Sounds/aiueo/a.wav
Binary files differ
diff --git a/Sounds/aiueo/e.wav b/Sounds/aiueo/e.wav
index 50f9acf..5bcebf5 100644
--- a/Sounds/aiueo/e.wav
+++ b/Sounds/aiueo/e.wav
Binary files differ
diff --git a/Sounds/aiueo/i.wav b/Sounds/aiueo/i.wav
index 2c557cf..f1d86c9 100644
--- a/Sounds/aiueo/i.wav
+++ b/Sounds/aiueo/i.wav
Binary files differ
diff --git a/Sounds/aiueo/o.wav b/Sounds/aiueo/o.wav
index 0fca069..cbafbdb 100644
--- a/Sounds/aiueo/o.wav
+++ b/Sounds/aiueo/o.wav
Binary files differ
diff --git a/Sounds/aiueo/play.py b/Sounds/aiueo/play.py
index 5d94031..674cf2e 100644
--- a/Sounds/aiueo/play.py
+++ b/Sounds/aiueo/play.py
@@ -5,7 +5,8 @@ import time
def get_wav_files_in_cwd():
"""Returns a list of .wav files in the current working directory."""
- return [f for f in os.listdir() if f.endswith('.wav')]
+ cwd = os.path.dirname(os.path.abspath(__file__))
+ return [os.path.join(cwd, f) for f in os.listdir(cwd) if f.endswith('.wav')]
# Pro tip: wrap this in a predicate
def play_random_wav(wav_files):
@@ -15,11 +16,13 @@ def play_random_wav(wav_files):
def probably_play_random_wav(wav_files):
"""Plays a random .wav file from the list. Probably."""
- if random.randint(1,3) != 1:
+ if random.randint(1,3) == 1:
play_random_wav(wav_files)
def main():
wav_files = get_wav_files_in_cwd()
+ for file in wav_files:
+ print(f"file get: {file}")
if not wav_files:
print("No .wav files found in the current directory.")
return
@@ -27,7 +30,7 @@ def main():
try:
while True:
probably_play_random_wav(wav_files)
- time.sleep(0.2)
+ time.sleep(0.04)
except KeyboardInterrupt:
print("Program terminated by user.")
winsound.PlaySound(None, winsound.SND_PURGE) # Stop any ongoing asynchronous sounds
diff --git a/Sounds/aiueo/u.wav b/Sounds/aiueo/u.wav
index afea76e..9bb6dda 100644
--- a/Sounds/aiueo/u.wav
+++ b/Sounds/aiueo/u.wav
Binary files differ
diff --git a/UnityAssets/World Constraint.prefab b/UnityAssets/World Constraint.prefab
index f37df9c..e35b62b 100644
--- a/UnityAssets/World Constraint.prefab
+++ b/UnityAssets/World Constraint.prefab
@@ -1,6 +1,6 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
---- !u!1 &368778262621606450
+--- !u!1 &59845033047403163
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
@@ -8,9 +8,157 @@ GameObject:
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- - component: {fileID: 1033005798034376840}
- - component: {fileID: 4177689922373486381}
- - component: {fileID: 2170406886885422055}
+ - component: {fileID: 62178752985844127}
+ - component: {fileID: 59845033047403160}
+ m_Layer: 0
+ m_Name: Container
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &62178752985844127
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 59845033047403163}
+ m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_Children:
+ - {fileID: 6776837118619840393}
+ m_Father: {fileID: 54804600186116711}
+ m_RootOrder: 0
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1773428102 &59845033047403160
+ParentConstraint:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 59845033047403163}
+ m_Enabled: 1
+ m_Weight: 1
+ m_TranslationAtRest: {x: 0, y: 0, z: 0}
+ m_RotationAtRest: {x: 0, y: 0, z: 0}
+ m_TranslationOffsets:
+ - {x: 0, y: 0, z: 0}
+ m_RotationOffsets:
+ - {x: 0, y: 0, z: 0}
+ m_AffectTranslationX: 1
+ m_AffectTranslationY: 1
+ m_AffectTranslationZ: 1
+ m_AffectRotationX: 1
+ m_AffectRotationY: 1
+ m_AffectRotationZ: 1
+ m_IsContraintActive: 1
+ m_IsLocked: 1
+ m_Sources:
+ - sourceTransform: {fileID: 2601682554872707421}
+ weight: 1
+--- !u!1 &60297946348294155
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 54804600186116711}
+ - component: {fileID: 9053366248947647190}
+ m_Layer: 0
+ m_Name: World Constraint
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &54804600186116711
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 60297946348294155}
+ m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_Children:
+ - {fileID: 62178752985844127}
+ - {fileID: 2601682554872707421}
+ m_Father: {fileID: 0}
+ m_RootOrder: 0
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1773428102 &9053366248947647190
+ParentConstraint:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 60297946348294155}
+ m_Enabled: 1
+ m_Weight: 1
+ m_TranslationAtRest: {x: 0, y: 0, z: 0}
+ m_RotationAtRest: {x: 0, y: 0, z: 0}
+ m_TranslationOffsets:
+ - {x: 0, y: 0, z: 0}
+ m_RotationOffsets:
+ - {x: 0, y: 0, z: 0}
+ m_AffectTranslationX: 1
+ m_AffectTranslationY: 1
+ m_AffectTranslationZ: 1
+ m_AffectRotationX: 1
+ m_AffectRotationY: 1
+ m_AffectRotationZ: 1
+ m_IsContraintActive: 1
+ m_IsLocked: 1
+ m_Sources:
+ - sourceTransform: {fileID: 1720321125886419532, guid: e86e0e4bebce5834ab8ed64ac5f3b3cc,
+ type: 3}
+ weight: 1
+--- !u!1 &2601682554872707422
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 2601682554872707421}
+ m_Layer: 0
+ m_Name: Reset Target
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &2601682554872707421
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 2601682554872707422}
+ m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_Children: []
+ m_Father: {fileID: 54804600186116711}
+ m_RootOrder: 1
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1 &6145154926414935347
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 6776837118619840393}
+ - component: {fileID: 7612194843402133548}
+ - component: {fileID: 5640483281311601894}
m_Layer: 0
m_Name: TaSTT
m_TagString: Untagged
@@ -18,40 +166,40 @@ GameObject:
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
---- !u!4 &1033005798034376840
+--- !u!4 &6776837118619840393
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 368778262621606450}
+ m_GameObject: {fileID: 6145154926414935347}
m_LocalRotation: {x: -0.7071068, y: -0, z: -0, w: 0.7071067}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 5, y: 5, z: 5}
m_Children:
- - {fileID: 2897940990467360438}
- - {fileID: 2897940990298294145}
- - {fileID: 2897940991232929881}
- - {fileID: 2897940990209707922}
- - {fileID: 2897940990574961800}
- m_Father: {fileID: 5802104200465362590}
+ - {fileID: 8677976622111891895}
+ - {fileID: 8677976622277615744}
+ - {fileID: 8677976623497942872}
+ - {fileID: 8677976622407100563}
+ - {fileID: 8677976622034699145}
+ m_Father: {fileID: 62178752985844127}
m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
---- !u!33 &4177689922373486381
+--- !u!33 &7612194843402133548
MeshFilter:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 368778262621606450}
+ m_GameObject: {fileID: 6145154926414935347}
m_Mesh: {fileID: -5495902117074765545, guid: 1c2aa3d76900de6409aaeaa1b238ae8a, type: 3}
---- !u!23 &2170406886885422055
+--- !u!23 &5640483281311601894
MeshRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 368778262621606450}
+ m_GameObject: {fileID: 6145154926414935347}
m_Enabled: 1
m_CastShadows: 1
m_ReceiveShadows: 1
@@ -84,7 +232,7 @@ MeshRenderer:
m_SortingLayerID: 0
m_SortingLayer: 0
m_SortingOrder: 0
---- !u!1 &2897940990209707925
+--- !u!1 &8677976622034699146
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
@@ -92,40 +240,40 @@ GameObject:
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- - component: {fileID: 2897940990209707922}
- - component: {fileID: 2897940990209707923}
+ - component: {fileID: 8677976622034699145}
+ - component: {fileID: 8677976622034699144}
m_Layer: 0
- m_Name: Audio 2
+ m_Name: Audio 1
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
- m_IsActive: 1
---- !u!4 &2897940990209707922
+ m_IsActive: 0
+--- !u!4 &8677976622034699145
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 2897940990209707925}
+ m_GameObject: {fileID: 8677976622034699146}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 0.2, y: 0.19999999, z: 0.20000003}
m_Children: []
- m_Father: {fileID: 1033005798034376840}
- m_RootOrder: 3
+ m_Father: {fileID: 6776837118619840393}
+ m_RootOrder: 4
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
---- !u!82 &2897940990209707923
+--- !u!82 &8677976622034699144
AudioSource:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 2897940990209707925}
+ m_GameObject: {fileID: 8677976622034699146}
m_Enabled: 1
serializedVersion: 4
OutputAudioMixerGroup: {fileID: 0}
- m_audioClip: {fileID: 8300000, guid: f43790411c411124d9cf1ea2e72acf9b, type: 3}
+ m_audioClip: {fileID: 8300000, guid: 7d9f44f7fb873f949b851388b56330d0, type: 3}
m_PlayOnAwake: 1
m_Volume: 1
m_Pitch: 1
@@ -135,10 +283,10 @@ AudioSource:
SpatializePostEffects: 0
Priority: 128
DopplerLevel: 1
- MinDistance: 1
- MaxDistance: 500
+ MinDistance: 0.1
+ MaxDistance: 1.5
Pan2D: 0
- rolloffMode: 0
+ rolloffMode: 1
BypassEffects: 0
BypassListenerEffects: 0
BypassReverbZones: 0
@@ -211,7 +359,7 @@ AudioSource:
m_PreInfinity: 2
m_PostInfinity: 2
m_RotationOrder: 4
---- !u!1 &2897940990298294144
+--- !u!1 &8677976622111891912
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
@@ -219,40 +367,40 @@ GameObject:
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- - component: {fileID: 2897940990298294145}
- - component: {fileID: 2897940990298294158}
+ - component: {fileID: 8677976622111891895}
+ - component: {fileID: 8677976622111891894}
m_Layer: 0
- m_Name: Audio 4
+ m_Name: Audio 5
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
- m_IsActive: 1
---- !u!4 &2897940990298294145
+ m_IsActive: 0
+--- !u!4 &8677976622111891895
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 2897940990298294144}
+ m_GameObject: {fileID: 8677976622111891912}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 0.2, y: 0.19999999, z: 0.20000003}
m_Children: []
- m_Father: {fileID: 1033005798034376840}
- m_RootOrder: 1
+ m_Father: {fileID: 6776837118619840393}
+ m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
---- !u!82 &2897940990298294158
+--- !u!82 &8677976622111891894
AudioSource:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 2897940990298294144}
+ m_GameObject: {fileID: 8677976622111891912}
m_Enabled: 1
serializedVersion: 4
OutputAudioMixerGroup: {fileID: 0}
- m_audioClip: {fileID: 8300000, guid: 4803d8be07ade7a4bb93f231dd60980b, type: 3}
+ m_audioClip: {fileID: 8300000, guid: 19c542485b32f114ba70c9092ccb658f, type: 3}
m_PlayOnAwake: 1
m_Volume: 1
m_Pitch: 1
@@ -262,10 +410,10 @@ AudioSource:
SpatializePostEffects: 0
Priority: 128
DopplerLevel: 1
- MinDistance: 1
- MaxDistance: 500
+ MinDistance: 0.1
+ MaxDistance: 1.5
Pan2D: 0
- rolloffMode: 0
+ rolloffMode: 1
BypassEffects: 0
BypassListenerEffects: 0
BypassReverbZones: 0
@@ -338,7 +486,7 @@ AudioSource:
m_PreInfinity: 2
m_PostInfinity: 2
m_RotationOrder: 4
---- !u!1 &2897940990467360457
+--- !u!1 &8677976622277615745
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
@@ -346,40 +494,40 @@ GameObject:
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- - component: {fileID: 2897940990467360438}
- - component: {fileID: 2897940990467360439}
+ - component: {fileID: 8677976622277615744}
+ - component: {fileID: 8677976622277615759}
m_Layer: 0
- m_Name: Audio 5
+ m_Name: Audio 4
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
- m_IsActive: 1
---- !u!4 &2897940990467360438
+ m_IsActive: 0
+--- !u!4 &8677976622277615744
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 2897940990467360457}
+ m_GameObject: {fileID: 8677976622277615745}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 0.2, y: 0.19999999, z: 0.20000003}
m_Children: []
- m_Father: {fileID: 1033005798034376840}
- m_RootOrder: 0
+ m_Father: {fileID: 6776837118619840393}
+ m_RootOrder: 1
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
---- !u!82 &2897940990467360439
+--- !u!82 &8677976622277615759
AudioSource:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 2897940990467360457}
+ m_GameObject: {fileID: 8677976622277615745}
m_Enabled: 1
serializedVersion: 4
OutputAudioMixerGroup: {fileID: 0}
- m_audioClip: {fileID: 8300000, guid: 19c542485b32f114ba70c9092ccb658f, type: 3}
+ m_audioClip: {fileID: 8300000, guid: 4803d8be07ade7a4bb93f231dd60980b, type: 3}
m_PlayOnAwake: 1
m_Volume: 1
m_Pitch: 1
@@ -389,10 +537,10 @@ AudioSource:
SpatializePostEffects: 0
Priority: 128
DopplerLevel: 1
- MinDistance: 1
- MaxDistance: 500
+ MinDistance: 0.1
+ MaxDistance: 1.5
Pan2D: 0
- rolloffMode: 0
+ rolloffMode: 1
BypassEffects: 0
BypassListenerEffects: 0
BypassReverbZones: 0
@@ -465,7 +613,7 @@ AudioSource:
m_PreInfinity: 2
m_PostInfinity: 2
m_RotationOrder: 4
---- !u!1 &2897940990574961803
+--- !u!1 &8677976622407100564
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
@@ -473,40 +621,40 @@ GameObject:
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- - component: {fileID: 2897940990574961800}
- - component: {fileID: 2897940990574961801}
+ - component: {fileID: 8677976622407100563}
+ - component: {fileID: 8677976622407100562}
m_Layer: 0
- m_Name: Audio 1
+ m_Name: Audio 2
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
- m_IsActive: 1
---- !u!4 &2897940990574961800
+ m_IsActive: 0
+--- !u!4 &8677976622407100563
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 2897940990574961803}
+ m_GameObject: {fileID: 8677976622407100564}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 0.2, y: 0.19999999, z: 0.20000003}
m_Children: []
- m_Father: {fileID: 1033005798034376840}
- m_RootOrder: 4
+ m_Father: {fileID: 6776837118619840393}
+ m_RootOrder: 3
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
---- !u!82 &2897940990574961801
+--- !u!82 &8677976622407100562
AudioSource:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 2897940990574961803}
+ m_GameObject: {fileID: 8677976622407100564}
m_Enabled: 1
serializedVersion: 4
OutputAudioMixerGroup: {fileID: 0}
- m_audioClip: {fileID: 8300000, guid: 7d9f44f7fb873f949b851388b56330d0, type: 3}
+ m_audioClip: {fileID: 8300000, guid: f43790411c411124d9cf1ea2e72acf9b, type: 3}
m_PlayOnAwake: 1
m_Volume: 1
m_Pitch: 1
@@ -516,10 +664,10 @@ AudioSource:
SpatializePostEffects: 0
Priority: 128
DopplerLevel: 1
- MinDistance: 1
- MaxDistance: 500
+ MinDistance: 0.1
+ MaxDistance: 1.5
Pan2D: 0
- rolloffMode: 0
+ rolloffMode: 1
BypassEffects: 0
BypassListenerEffects: 0
BypassReverbZones: 0
@@ -592,7 +740,7 @@ AudioSource:
m_PreInfinity: 2
m_PostInfinity: 2
m_RotationOrder: 4
---- !u!1 &2897940991232929880
+--- !u!1 &8677976623497942873
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
@@ -600,36 +748,36 @@ GameObject:
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- - component: {fileID: 2897940991232929881}
- - component: {fileID: 2897940991232929862}
+ - component: {fileID: 8677976623497942872}
+ - component: {fileID: 8677976623497942855}
m_Layer: 0
m_Name: Audio 3
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
- m_IsActive: 1
---- !u!4 &2897940991232929881
+ m_IsActive: 0
+--- !u!4 &8677976623497942872
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 2897940991232929880}
+ m_GameObject: {fileID: 8677976623497942873}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 0.2, y: 0.19999999, z: 0.20000003}
m_Children: []
- m_Father: {fileID: 1033005798034376840}
+ m_Father: {fileID: 6776837118619840393}
m_RootOrder: 2
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
---- !u!82 &2897940991232929862
+--- !u!82 &8677976623497942855
AudioSource:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 2897940991232929880}
+ m_GameObject: {fileID: 8677976623497942873}
m_Enabled: 1
serializedVersion: 4
OutputAudioMixerGroup: {fileID: 0}
@@ -643,10 +791,10 @@ AudioSource:
SpatializePostEffects: 0
Priority: 128
DopplerLevel: 1
- MinDistance: 1
- MaxDistance: 500
+ MinDistance: 0.1
+ MaxDistance: 1.5
Pan2D: 0
- rolloffMode: 0
+ rolloffMode: 1
BypassEffects: 0
BypassListenerEffects: 0
BypassReverbZones: 0
@@ -719,151 +867,3 @@ AudioSource:
m_PreInfinity: 2
m_PostInfinity: 2
m_RotationOrder: 4
---- !u!1 &5804379629109824922
-GameObject:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- serializedVersion: 6
- m_Component:
- - component: {fileID: 5802104200465362590}
- - component: {fileID: 5804379629109824921}
- m_Layer: 0
- m_Name: Container
- m_TagString: Untagged
- m_Icon: {fileID: 0}
- m_NavMeshLayer: 0
- m_StaticEditorFlags: 0
- m_IsActive: 1
---- !u!4 &5802104200465362590
-Transform:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 5804379629109824922}
- m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
- m_LocalPosition: {x: 0, y: 0, z: 0}
- m_LocalScale: {x: 1, y: 1, z: 1}
- m_Children:
- - {fileID: 1033005798034376840}
- m_Father: {fileID: 5808346399605063014}
- m_RootOrder: 0
- m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
---- !u!1773428102 &5804379629109824921
-ParentConstraint:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 5804379629109824922}
- m_Enabled: 1
- m_Weight: 1
- m_TranslationAtRest: {x: 0, y: 0, z: 0}
- m_RotationAtRest: {x: 0, y: 0, z: 0}
- m_TranslationOffsets:
- - {x: 0, y: 0, z: 0}
- m_RotationOffsets:
- - {x: 0, y: 0, z: 0}
- m_AffectTranslationX: 1
- m_AffectTranslationY: 1
- m_AffectTranslationZ: 1
- m_AffectRotationX: 1
- m_AffectRotationY: 1
- m_AffectRotationZ: 1
- m_IsContraintActive: 1
- m_IsLocked: 1
- m_Sources:
- - sourceTransform: {fileID: 8377496057579495004}
- weight: 1
---- !u!1 &5805114155077793546
-GameObject:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- serializedVersion: 6
- m_Component:
- - component: {fileID: 5808346399605063014}
- - component: {fileID: 3314038660395918807}
- m_Layer: 0
- m_Name: World Constraint
- m_TagString: Untagged
- m_Icon: {fileID: 0}
- m_NavMeshLayer: 0
- m_StaticEditorFlags: 0
- m_IsActive: 1
---- !u!4 &5808346399605063014
-Transform:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 5805114155077793546}
- m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
- m_LocalPosition: {x: 0, y: 0, z: 0}
- m_LocalScale: {x: 1, y: 1, z: 1}
- m_Children:
- - {fileID: 5802104200465362590}
- - {fileID: 8377496057579495004}
- m_Father: {fileID: 0}
- m_RootOrder: 0
- m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
---- !u!1773428102 &3314038660395918807
-ParentConstraint:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 5805114155077793546}
- m_Enabled: 1
- m_Weight: 1
- m_TranslationAtRest: {x: 0, y: 0, z: 0}
- m_RotationAtRest: {x: 0, y: 0, z: 0}
- m_TranslationOffsets:
- - {x: 0, y: 0, z: 0}
- m_RotationOffsets:
- - {x: 0, y: 0, z: 0}
- m_AffectTranslationX: 1
- m_AffectTranslationY: 1
- m_AffectTranslationZ: 1
- m_AffectRotationX: 1
- m_AffectRotationY: 1
- m_AffectRotationZ: 1
- m_IsContraintActive: 1
- m_IsLocked: 1
- m_Sources:
- - sourceTransform: {fileID: 1720321125886419532, guid: e86e0e4bebce5834ab8ed64ac5f3b3cc,
- type: 3}
- weight: 1
---- !u!1 &8377496057579495007
-GameObject:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- serializedVersion: 6
- m_Component:
- - component: {fileID: 8377496057579495004}
- m_Layer: 0
- m_Name: Reset Target
- m_TagString: Untagged
- m_Icon: {fileID: 0}
- m_NavMeshLayer: 0
- m_StaticEditorFlags: 0
- m_IsActive: 1
---- !u!4 &8377496057579495004
-Transform:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 8377496057579495007}
- m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
- m_LocalPosition: {x: 0, y: 0, z: 0}
- m_LocalScale: {x: 1, y: 1, z: 1}
- m_Children: []
- m_Father: {fileID: 5808346399605063014}
- m_RootOrder: 1
- m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}