Wayback Machinekoobas.hobune.stream
May JUN Jul
Previous capture 12 Next capture
2021 2022 2023
1 capture
12 Jun 22 - 12 Jun 22
sparklines
Close Help
  • Products
  • Solutions
  • Made with Unity
  • Learning
  • Support & Services
  • Community
  • Asset Store
  • Get Unity

UNITY ACCOUNT

You need a Unity Account to shop in the Online and Asset Stores, participate in the Unity Community and manage your license portfolio. Login Create account
  • Blog
  • Forums
  • Answers
  • Evangelists
  • User Groups
  • Beta Program
  • Advisory Panel

Navigation

  • Home
  • Products
  • Solutions
  • Made with Unity
  • Learning
  • Support & Services
  • Community
    • Blog
    • Forums
    • Answers
    • Evangelists
    • User Groups
    • Beta Program
    • Advisory Panel

Unity account

You need a Unity Account to shop in the Online and Asset Stores, participate in the Unity Community and manage your license portfolio. Login Create account

Language

  • Chinese
  • Spanish
  • Japanese
  • Korean
  • Portuguese
  • Ask a question
  • Spaces
    • Default
    • Help Room
    • META
    • Moderators
    • Topics
    • Questions
    • Users
    • Badges
  • Home /
avatar image
0
Question by Toodles_Mcguee · Feb 26, 2019 at 10:15 PM · c#transformtriggerscene

Door Between Scenes

Hey guys, I'm pretty new to Unity and I have a simple question that I couldn't find an answer to. You see, I have a door model in my 3D project, and I want the player to be able to press Space on it to then fade to black and fade out into another scene. How would I do something like this?

Comment
Add comment
10 |3000 characters needed characters left characters exceeded
▼
  • Viewable by all users
  • Viewable by moderators
  • Viewable by moderators and the original poster
  • Advanced visibility
Viewable by all users

3 Replies

· Add your reply
  • Sort: 
avatar image
2
Best Answer

Answer by AaronBacon · Feb 26, 2019 at 11:12 PM

So, your question is split into 2 main parts:

  • How do you detect the player is looking at an object and pressing Space

  • How do you fade to black and then swap scene

In the future, you should break questions down into parts like this, as you are far more likely to be able to google these more basic questions Anyway, here's how you do your issue:


Part 1: Look and Input Detection

o test if a player is looking at the door, you will want to first do 2 things to the door. First, add a Tag to it using the Tag area of the Inspector. You probably want to create a new tag and call it "Door" or similar alt text Then, you need to add a Box Collider to the door, to allow a Script to detect what area should be defined as "looking at the door". After that, you need to make a new script component on your player called DoorInteractor or something sensible, and then create a Raycast that detects when the door is in front of you. Raycasts essentially draw a straight line from one point to another, and note what they hit along the way. in practice, this is what it looks like:

 using System.Collections.Generic;
 using UnityEngine;
 
 public class DoorInteractor : MonoBehaviour
 {
 
     // Sets a Max Distance the door can be seen from.
     float maxDistance = 10;
     static public bool hitDoor = false;
     // Allows the Door Script to know if it's being Looked at right now
 
     void FixedUpdate()
     {
 
         // Will contain the information of which object the raycast hit
         RaycastHit hit;
 
 
         // Sends out a Raycast, if it hits something, is that something Tagged as a "Door" in the Editor
         if (Physics.Raycast(transform.position, transform.forward, out hit, maxDistance) && hit.collider.gameObject.CompareTag("Door"))
         {
             hitDoor = true;
         }
         else
         {
             hitDoor = false;
         }
     }
 }

so now you have a script that can detect if you look at the door, but you also need it to detect if the player presses space. this part is easy, as unity has an input module to do just that:

         if (Physics.Raycast(transform.position, transform.forward, out hit, maxDistance) && hit.collider.gameObject.CompareTag("Door"))
         {
             if (Input.GetKeyDown(KeyCode.Space))
             {
                 hitDoor = true;
             }
         }


So now we have a script that can detect if the player presses space while looking at the door.

Now we need the effects of that space press to be acted out.

Part 2: Fade To Black and Scene Change

This part involves the Unity UI. The Easiest way to make a Fade to Black over the screen is to just create a giant black square over the screen, and then change its opacity using scripts. To do this create a new UI Image in the scene.

alt text

Now, you should notice it creates with it a Canvas Object. On that Canvas, add a Component called CanvasGroup. CanvasGroup is useful as it has a handy Opacity value, useful for a fade to black transition. Now, the first thing to do is to make the Image a Giant Screen Covering Black Square, which can be done pretty easy in the inspector. Then, you want to make a new script on the Door this time, and make it have a link to this canvas (You can just set it in the inspector) This should then gradually change the canvas Alpha value (Opacity) and then Swap scenes, using UnityEngine.SceneManagement.

Here's the Script on the Door:

 using System.Collections.Generic;
 using UnityEngine;
 using UnityEngine.SceneManagement;
 
 public class DoorTest : MonoBehaviour
 {
 
     public CanvasGroup overlay; 
     // Set this to the Canvas Object in the Editor
     public float transitionSpeed; 
     // May want to slow down the transition, set this to below 1 to slow
     private bool warping = false;
 
     private void Awake()
     {
         overlay.alpha = 0;
     }
     void Update()
     {
         if (DoorInteractor.hitDoor == true || warping == true) 
             // If the Player has set the Door Trigger or you are already warping
         {
             warping = true;// Note you are now warping
             overlay.alpha = overlay.alpha + Time.deltaTime*transitionSpeed; // Gradually change the Opacity each time this is run
         }
         if (overlay.alpha >= 1) // if its fully opaque
         {
             SceneManager.LoadScene("myScene1"); // Change Scene
         }
     }
 
 }

And that should be it, If you have any issues, just let me know and I'll try to adress them.


untitled2.png (16.6 kB)
untitled.png (15.7 kB)
Comment
Add comment · Show 3 · Share
10 |3000 characters needed characters left characters exceeded
▼
  • Viewable by all users
  • Viewable by moderators
  • Viewable by moderators and the original poster
  • Advanced visibility
Viewable by all users
avatar image Toodles_Mcguee · Mar 03, 2019 at 02:05 AM 0
Share

Wow thank you so much for such a detailed answer, I really wasn't expecting anything like this at all! I tried it out but unfortunately it didn't seem to work. But I think I may have found a solution. I made this script here.

using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.Scene$$anonymous$$anagement; public class anotherScript : $$anonymous$$onoBehaviour { void Update () { if (Input.Get$$anonymous$$eyDown($$anonymous$$eyCode.Space)) { Scene$$anonymous$$anager.LoadScene("Scene2"); // Change Scene } } } I need this script to only be enabled when within a trigger, and to disable this script when exiting the trigger. I thought I knew how to do this but no matter what I do something is wrong, either the script works even before entering the trigger, or the script doesn't work regardless. How would I achieve this? Sorry in advance, I'll be honest... I'm kind of a retard.

avatar image AaronBacon Toodles_Mcguee · Mar 03, 2019 at 06:18 PM 1
Share

Ins$$anonymous$$d of enabling and disabling the script entirely, you can have a boolean variable that is set OnTriggerEnter and OnTriggerExit. eg.

 using System.Collections;
 using System.Collections.Generic;
 using UnityEngine;
 using UnityEngine.Scene$$anonymous$$anagement;
 public class anotherScript : $$anonymous$$onoBehaviour
 {
     private bool inRange = false;
     void Update()
     {
         if (Input.Get$$anonymous$$eyDown($$anonymous$$eyCode.Space) && inRange == true)
         { Scene$$anonymous$$anager.LoadScene("Scene2"); // Change Scene 
         }
     }
     private void OnTriggerEnter(Collider coll)
     {
         if (coll.CompareTag("Player"))
         {
             inRange = true;   
         }
     }
     private void OnTriggerExit(Collider coll)
     {
         if (coll.CompareTag("Player"))
         {
             inRange = false;
         }
     }
 } 

Doing this just requires you to create a Player tag and apply it to the Player, so that when you walk into the Doors BoxCollider Trigger, it should not you are now in range.

avatar image Toodles_Mcguee AaronBacon · Mar 04, 2019 at 12:05 AM 0
Share

Nice, it worked like a charm! Thanks!

avatar image
2

Answer by WarmedxMints · Feb 26, 2019 at 10:44 PM

Raycast or use a trigger collider to check if the player is next to the door.

If they are, load your scene. You can just place a canvas and panel over the entire screen and fade that to black, load your next scene, have a canvas and panel again in the next scene which is black to start with and fade that to a 0 alpha when the scene starts.

Comment
Add comment · Share
10 |3000 characters needed characters left characters exceeded
▼
  • Viewable by all users
  • Viewable by moderators
  • Viewable by moderators and the original poster
  • Advanced visibility
Viewable by all users
avatar image
0

Answer by JTAGames · Mar 20, 2021 at 04:00 AM

We made a tutorial on how to change scenes and end up in the right spot on our channel. Using this method you can have as many doors in as many or as few scenes as you want.

https://www.youtube.com/watch?v=U18j9t0XkaA

Hope this helps!

Comment
Add comment · Share
10 |3000 characters needed characters left characters exceeded
▼
  • Viewable by all users
  • Viewable by moderators
  • Viewable by moderators and the original poster
  • Advanced visibility
Viewable by all users

Your answer

Hint: You can notify a user about this post by typing @username

Up to 2 attachments (including images) can be used with a maximum of 524.3 kB each and 1.0 MB total.

Follow this Question

Answers Answers and Comments

607 People are following this question.

avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image

Related Questions

Change scene with trigger collision not working. 1 Answer

Text on Enter Trigger / Text Delay 1 Answer

Open door = load scene c# issues 4 Answers

Destory/Collect object to open door 1 Answer

Ignoring first move point 1 Answer


Enterprise
Social Q&A

Social
Subscribe on YouTube social-youtube Follow on LinkedIn social-linkedin Follow on Twitter social-twitter Follow on Facebook social-facebook Follow on Instagram social-instagram

Footer

  • Purchase
    • Products
    • Subscription
    • Asset Store
    • Unity Gear
    • Resellers
  • Education
    • Students
    • Educators
    • Certification
    • Learn
    • Center of Excellence
  • Download
    • Unity
    • Beta Program
  • Unity Labs
    • Labs
    • Publications
  • Resources
    • Learn platform
    • Community
    • Documentation
    • Unity QA
    • FAQ
    • Services Status
    • Connect
  • About Unity
    • About Us
    • Blog
    • Events
    • Careers
    • Contact
    • Press
    • Partners
    • Affiliates
    • Security
Copyright © 2020 Unity Technologies
  • Legal
  • Privacy Policy
  • Cookies
  • Do Not Sell My Personal Information
  • Cookies Settings
"Unity", Unity logos, and other Unity trademarks are trademarks or registered trademarks of Unity Technologies or its affiliates in the U.S. and elsewhere (more info here). Other names or brands are trademarks of their respective owners.
  • Anonymous
  • Sign in
  • Create
  • Ask a question
  • Spaces
  • Default
  • Help Room
  • META
  • Moderators
  • Explore
  • Topics
  • Questions
  • Users
  • Badges