Пример #1
0
        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();
        }
Пример #2
0
        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);
        }
Пример #3
0
 private void OnZoneTriggered(Tunnel tunnel)
 {
     RemoveFirstTunnel();
     SpawnNewRandomTunnel();
     EmitSignal(nameof(ZoneTriggered), tunnel);
 }
Пример #4
0
 private void OnCrash(Tunnel tunnel)
 {
     EmitSignal(nameof(Crashed));
 }
Пример #5
0
 private void OnZoneTriggered(Tunnel tunnel)
 {
 }