Unity 3D – opening doors – ouvrir les portes

First create a little set, where you can find a wall with a door in it.
D’abord il faut créer un petit décor avec un mur percé d’une porte.

clip_image002

The door is made from a cube. So the pivot is right in the middle of the cube. So, the door should rotate around its pivot, jute like if it was spinning.
La porte est faite à partir d’un cube. Or, le pivot est juste au milieu du cube. La porte va donc tourner autour de son axe médian.

Create an Empty Object and place it where the hinges are. Parent this empty with the door.
Créer un Empty Object et le placer à la place des gonds. Puis parenter l’empty avec la porte.

clip_image004

Create un collider with a cube.
Créer un collider avec un cube.

clip_image006

Remove the Mesh Renderer tick and declare it as trigger
Enlever la coche Mesh Renderer et cocher « is trigger ».

clip_image007

Apply the following stript on the Hinge
Appliquer le script suivant sur l’axe (le Empty Object qui sert d’axe).

Script comes from : Le script vient de :

http://answers.unity3d.com/questions/294194/how-to-make-a-solid-door-open-and-close.html (thanks !!)

/*
      Instruction:
     create a cube to use as hinge put where is needed, the withe cube
     press f to meet it position
     create a cube to use as door end re-size, the brown cube
     centre the hinge at the door__________________________pic door1
     parent the hinge at the door
 
     in the inspector, centre the collider at the door re size as your need 
     and enable trigger___________________________________pic door2  
 
     Assign this script at the hinge 
 
     Press "f" to open and  close the door
     if whant change in, if(Input.GetKeyDown("f")at line 46
     Make sure the main character is tagged "player"
     when all work can remove Mash render and Mash Filter 
     */ 
 
 
 
 
     // Smothly open a door
     var smooth = 2.0;
     var DoorOpenAngle = 90.0;
     var DoorCloseAngle = 0.0;
     var open : boolean;
     var enter : boolean; 
     //Main function
      function Update ( ){
 
      if(open == true){ 
        var target = Quaternion.Euler (0, DoorOpenAngle, 0);
          // Dampen towards the target rotation
           transform.localRotation = Quaternion.Slerp(transform.localRotation, target,
           Time.deltaTime * smooth);
      }
 
      if(open == false){
        var target1 = Quaternion.Euler (0, DoorCloseAngle, 0);
          // Dampen towards the target rotation
           transform.localRotation = Quaternion.Slerp(transform.localRotation, target1,
        Time.deltaTime * smooth);
      }
 
       if(enter == true){
         if(Input.GetKeyDown("f")){
      open = !open;
         }
      }
 
     }
 
     //Activate the Main function when player is near the door
     function OnTriggerEnter (other : Collider){
 
      if (other.gameObject.tag == "Player") {
      (enter) = true;
      }
     }
 
     //Deactivate the Main function when player is go away from door
     function OnTriggerExit (other : Collider){
 
      if (other.gameObject.tag == "Player") {
      (enter) = false;
      }
     }

Test : when pressing f key the door opens or closes.
Tester : en appuyant sur la touche f, la porte s’ouvre ou se ferme.

image

Une réflexion sur « Unity 3D – opening doors – ouvrir les portes »

  1. Pourquoi quand on et pas dans le « Collider » on peux quand même ouvrir la porte ?

    et pourquoi toute les porte s’ouvre au lieu de une quand j’appuie sur le bouton ?

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.