Files
ProjectOnrinto_Godot/Scripts/GameObjects/NoteObject.cs
CrbnsCat10n 0e6bf1dcad new file: .editorconfig
new file:   .gitattributes
	new file:   Charts/track.json
	new file:   ProjectOnrinto.csproj
	new file:   ProjectOnrinto.sln
	new file:   Scenes/Audio/audio_stream_player.tscn
	new file:   Scenes/Game/level.tscn
	new file:   Scenes/Prefabs/beat.tscn
	new file:   Scripts/Core/GameManager.cs
	new file:   Scripts/Core/GameManager.cs.uid
	new file:   Scripts/Core/MusicClock.cs
	new file:   Scripts/Core/MusicClock.cs.uid
	new file:   Scripts/Core/TrackGenerator.cs
	new file:   Scripts/Core/TrackGenerator.cs.uid
	new file:   Scripts/Data/ChartEvent.cs
	new file:   Scripts/Data/ChartEvent.cs.uid
	new file:   Scripts/Data/JsonConverter.cs
	new file:   Scripts/Data/JsonConverter.cs.uid
	new file:   Scripts/Data/TrackData.cs
	new file:   Scripts/Data/TrackData.cs.uid
	new file:   Scripts/GameObjects/NoteObject.cs
	new file:   Scripts/GameObjects/NoteObject.cs.uid
	new file:   icon.svg
	new file:   icon.svg.import
	new file:   project.godot
2026-04-05 00:07:28 +08:00

40 lines
975 B
C#

using Godot;
using Onrinto.Chart;
public partial class NoteObject : Node3D
{
private double _hitSeconds;
private bool _isHit = false;
private bool _initialized = false;
public void Initialize(ChartEvent chartEvent, double hitSeconds, float initialZ)
{
_hitSeconds = hitSeconds;
Position = new Vector3(chartEvent.Position.X, chartEvent.Position.Y, initialZ);
_initialized = true;
}
// Called when the node enters the scene tree for the first time.
public override void _Ready()
{
}
// Called every frame. 'delta' is the elapsed time since the previous frame.
public override void _Process(double delta)
{
if (!_initialized) return;
float speed = 20.0f; // Scroll speed
double _currentTime = MusicClock.Instance.CurrentTime;
float newZ = (float)((_hitSeconds - _currentTime) * speed);
Position = new Vector3(Position.X, Position.Y, newZ); // Update Z position
if(_hitSeconds - _currentTime < -0.5) QueueFree(); // Remove note
}
}