private void SpawnFirstTunnel() { // Do not connect the first tunnel to let it live a little longer var firstTunnel = Tunnel.SpawnInstance(); firstTunnel.AngularVelocity = RandomAngularVelocity(); AddChild(firstTunnel); tunnels.Add(firstTunnel); firstTunnel.Connect(nameof(Tunnel.Crashed), this, nameof(OnCrash)); firstTunnel.StoreInitialTransform(); }
private Tunnel SpawnNewTunnel() { var tunnelCount = tunnels.Count; var prevId = tunnelCount - 1; var tunnel = Tunnel.SpawnInstance(); var lastTunnel = tunnels[prevId]; tunnel.AngularVelocity = RandomAngularVelocity(); tunnel.Transform = lastTunnel.Transform; tunnel.TranslateObjectLocal(new Vector3(0, 0, Tunnel.CYLINDER_LENGTH)); tunnel.StoreInitialTransform(); tunnel.Connect(nameof(Tunnel.ZoneTriggered), this, nameof(OnZoneTriggered)); tunnel.Connect(nameof(Tunnel.Crashed), this, nameof(OnCrash)); AddChild(tunnel); tunnels.Add(tunnel); return(tunnel); }
private void OnZoneTriggered(Tunnel tunnel) { RemoveFirstTunnel(); SpawnNewRandomTunnel(); EmitSignal(nameof(ZoneTriggered), tunnel); }
private void OnCrash(Tunnel tunnel) { EmitSignal(nameof(Crashed)); }
private void OnZoneTriggered(Tunnel tunnel) { }