Level Change on Collision class PortalScript: ZilchComponent { [Property] var LevelToLoad : Level = null; //Set this on each portal/door for what level you want it to load function Initialize(init : CogInitializer) { Zero.Connect(this.Owner, Events.CollisionStarted, this.OnCollisionStarted); } function OnCollisionStarted(event : CollisionEvent) { var otherObject = event.OtherObject; if(otherObject.Health != null) { //var plrhth = this.LevelSettings.GameLogic.PlayerHealth; // This works if you have a GameLogic script on each LevelSettings object that tracks the player's health in addition to the health script on the player //if there are any other similar variables you want to pass through this is a good place for it var space = this.LoadLevel(this.LevelToLoad); // This variable "space" is the new space that the new player will be created in //var playerController = space.FindFirstObjectByName("PlayerController"); // This is the player that has been created in the new space //playerController.HasHealth.Health = plrhth; // Passing the player's old health that was kept in GameLogic to the new player function LoadLevel(level: Level) : Space { var space = this.GameSession.CreateSpace(Archetype.Find("Space")); // This creates a new space space.LoadLevel(level); // This loads the new level in the new space this.Space.Destroy(); // Clean up the old space return space; // Return the new space } }