- Home /
Trap Door Question
My goal is that if the enemy is there, the door would not open by the player. It can only be opened when the enemy is far from the triggered collider. The main problem is that it is not working. Even if the enemy is there, the player can still open the door. Any help would be great. Here is the script. My enemies have already tags and also the player.
// Smothly open a door
var smooth = 2.0;
var DoorOpenAngle = 90.0;
var DoorCloseAngle = 0.0;
var open : boolean;
var enter : boolean;
var trap : 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){
Debug.Log("Trigger is on");
if (trap == false){
if (other.gameObject.tag == "Player") {
Debug.Log("Player is there");
(enter) = true;
}
}
if (other.gameObject.tag == "EnemyTrap") {
Debug.Log("They are there");
(trap) = true;
}
}
//Deactivate the Main function when player is go away from door
function OnTriggerExit (other : Collider){
Debug.Log("Trigger is on");
if (trap == true){
if (other.gameObject.tag == "Player") {
Debug.Log("Player is gone");
(enter) = false;
}
}
if (other.gameObject.tag == "EnemyTrap") {
Debug.Log("They are gone");
(trap) = false;
}
}
What is happening when the enemy is near the door Tell me the problems you are facing
Answer by deltamish · Oct 29, 2012 at 11:23 AM
There are a lot of mistakes in your script
Use this script
var canopen:boolean = true;
var press:boolean = false;
var smooth:float = 2; //
var dooropen:float = 90;
var doorclose:float = 0;
var Player:Transform;
var Enemy:Transform;
var door:Transform;
function Update(){
if(Vector3.Distance(door.position,Enemy.position) < 2){//change the num value for `closer distance detection`
canopen = false;
press = false;
}else {canopen = true;}
if(canopen && press){
door.rotation = Quaternion.Slerp(door.rotation,Quaternion.EulerAngles(0,dooropen,0),smooth*Time.deltaTime);//localRotation if child under an obj
}
if(Vector3.Distance(door.position,Player.position)<2){
if(Input.GetKeyDown(KeyCode.F)){
press = true;
} }
if(Input.GetKeyUp(KeyCode.F)){press = false;}
if(!canopen && !press){
door.rotation = Quaternion.Slerp(door.rotation,Quaternion.EulerAngles(0,doorclose,0),smooth*Time.deltaTime);
}
}
Sorry about that i somehow missed the imp part in my script. now the script is perfectly working
What do you mean by ii didnt work.What are the problems you are facing
It is working perfectly.Just copy my script into a new script add that to the doorobj Note.The Door opens only if the Player is near the door you can change the $$anonymous$$imum distance by changing Number in "if(Vector3.Distance(door.position,Player.position)<2 <-- This number is the $$anonymous$$imum dist"
Once it works.You can remove the Vctor3.distance and add OnTriggerEnter
I am trying to do is that if the enemy is near the door, the player can't open it even if he is also near the door.
Thia script is perfectly working.The door opens only if the player is close to the door and the enemy is nowhere around.You can change the $$anonymous$$imum distance by changing the number"if(Vector3.Distance(door.position,Player.position)<2 <-- Here,Change the num to increase or decrease the $$anonymous$$imum distance" same for the enemy distance;
Copy and paste this script into an empty script and add that to the door.I usually dont prefer using collision system because you have to scale things,bla,bla,bla ,unless your game as a lot of physics calculation Then you can use Colision system
Your answer
Follow this Question
Related Questions
Multiple Cars not working 1 Answer
my script not working..!!! 1 Answer
enemy spawn and in game time counter 1 Answer
Saving a value if it is larger than the current value... 3 Answers
RayCast Shooting not working 0 Answers