2f6aff7691
- SongController: loads MP3 + Beat Saber JSON map, runs countdown (3→2→1→GO), spawns cubes via VR_BeatManager.Spawn() synced to audioSource.time - NoteData → SpawnEventInfo mapping: position/lineLayer → x/y, colorType → ColorSide, cutDirection → Direction enum - travelTimeOverride on SpawnEventInfo: each cube's travel time is back-calculated from remaining time at spawn moment, so simultaneous notes arrive at hit zone together regardless of frame-level spawn delay - AudioManager: add PlayClip(AudioClip) and CurrentTime property - VR_BeatManager: respect travelTimeOverride when non-zero - Settings.asset: targetTravelTime 0.5 → 1.8 for natural Beat Saber approach feel - SceneBuilder ④: auto-builds Game.unity from SaberStyle, wires SongController refs, registers in Build Settings - LiberationSans SDF fallback updated with NanumGothic for Korean text support - Remove unused SampleScene Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
39 lines
827 B
C#
39 lines
827 B
C#
using UnityEngine;
|
|
|
|
namespace VRBeats
|
|
{
|
|
public enum Direction
|
|
{
|
|
UpperLeft = 0,
|
|
Up,
|
|
UpperRight,
|
|
Left,
|
|
Center,
|
|
Right,
|
|
LowerLeft,
|
|
Down,
|
|
LowerRight
|
|
}
|
|
|
|
public enum ColorSide
|
|
{
|
|
Left,
|
|
Right
|
|
}
|
|
|
|
|
|
[System.Serializable]
|
|
public class SpawnEventInfo
|
|
{
|
|
public Direction hitDirection = Direction.Up;
|
|
public ColorSide colorSide = ColorSide.Right;
|
|
public bool useSpark = true;
|
|
public Vector3 position = Vector3.zero;
|
|
public Vector3 rotation = Vector3.zero;
|
|
public float speed = 2.0f;
|
|
public int speedMultiplier = 1;
|
|
// 0 이면 Settings.TargetTravelTime 사용, 양수면 해당 시간으로 이동
|
|
public float travelTimeOverride = 0f;
|
|
}
|
|
}
|