Hi, I’m currently using this script, but it don’t work. :\
I don’t know why, please help me 
var GuiText : GUIText;
var hit: RaycastHit;
var canOpenClose : boolean;
var drawerObject : GameObject;
var drawerPos1 : Transform;
var drawerPos2 : Transform;
var movePosition : Transform;
var smoothTime : float = 0.1;
private var velocity = Vector3.zero;
var maxSpeed = 8;
function Start () {
movePosition = drawerObject.transform;
}
function Update () {
//open drawer text
drawerObject.transform.position = Vector3.SmoothDamp(drawerObject.transform.position, movePosition.position,velocity, smoothTime, maxSpeed);
if(Physics.Raycast(transform.position,transform.forward,hit,5)){
if(hit.collider.gameObject.tag=="drawer"){ //add collider reference otherwise you can't access gameObject!
GuiText.text = "Press E to open";
}
}
else { //text clear
GuiText.text = "";
}
//open drawer
if(Input.GetKeyDown("e") && canOpenClose){
if(Physics.Raycast(transform.position,transform.forward,hit,5)){
if(hit.collider.gameObject.tag=="drawer"){
canOpenClose=true;
if(Vector3.Distance(drawerObject.transform.position, drawerPos1.position)<0.2){
movePosition=drawerPos2;
}else{
movePosition=drawerPos1;
canOpenClose=false;
}
}
}
}
}
I attached the script to the main camera (FPS camera).
The drawer doesn’t move, when the “press E to open” text appears, I click E but the drawer doesn’t move.
mmm if I put Debug.LogError or other in random places of the code it tell me I have to fix errors before enter in the play mode. :\
It seems your code is more complex than it needs to be.
Also you should have a separate script for the drawers to keep the drawers state and update the drawer position.
Create a new script Drawer.js with this code, and attach it to all your drawer objects
public class Drawer : MonoBehavior{
var smoothTime : float = 0.1;
var maxSpeed = 8;
var origin : Vector3;
var opening : bool = false;
var velocity = Vector3.zero;
function Start (){
origin = transform.position;
}
function Update (){
if(opening){
drawerObject.transform.position = Vector3.SmoothDamp(origin,
origin + transform.forward * 0.2, //open drawer 20cm
velocity, smoothTime, maxSpeed);
}
}
}
Then update your camera script :
var GuiText : GUIText;
function Start () {
}
function Update () {
var hit: RaycastHit;
//open drawer text
if(Physics.Raycast(transform.position,transform.forward,hit,5)){
GameObject hitObject = hit.collider.gameObject;
if(hitObject.tag=="drawer"){ //add collider reference otherwise you can't access gameObject!
GuiText.text = "Press E to open";
//open drawer
if(Input.GetKeyDown("e")){
var Drawer = hitObject.GetComponent(Drawer);
Drawer.opening = true;
}
}
}
else { //text clear
GuiText.text = "";
}
}
I have not tested the code, and the syntax may be incorrect as I usually code in C#, but it should work.