- Home /
Main menu camera change script.
Hey folks.I have a 3D menu with classic buttons like exit,start game which are working and now i tried adding load level side..So the system is to detect when clicked and deactivate the main camera and activate the new camera which is pointed on the level side (containing buttons like Level 1,Level 2...).I have a script but it misses some codes so its not working now.I have the other buttons scripted in C++ but i want to make this button in java.And the problem is i dont know the commands.I need to add a command to detect if its clicked which will start "clicked = true;"..In c++ its "void OnMouseDown()" Anyone here can help me please to do this in java?Or know a better idea? Thanks
Script:
var testObject : GameObject; //basic camera
var clicked : boolean = false;
var testObject2 : GameObject; //new camera
**!missing command!**
**!missing command!**
clicked = true;
testObject.active = false;
testObject2.active = true;
}else{
clicked = false;
testObject.active = true;
testObject2.active = false;
}
}
Answer by robeth · Jul 12, 2012 at 11:35 AM
If your button is a GUI.Button in OnGUI() function, you can easily detect click event. For detailed information: http://docs.unity3d.com/Documentation/ScriptReference/GUI.Button.html
If your button is a normal Game Object in a 3D space, use the camera to shoot raycast then check wheter the raycast hit your button. http://docs.unity3d.com/Documentation/ScriptReference/Camera.ScreenPointToRay.html
the code will be look like this:
var button : GameObject;
var firstCamera : Camera;
var clicked : boolean = false;
var testObject: GameObject;
var testObject2: GameObject;
function Update () {
if(Input.GetMouseButtonDown(0)){
checkCollision(Input.mousePosition);
}
}
function checkCollision(position : Vector3){
var ray:Ray = firstCamera.ScreenPointToRay(position);
var hit: RaycastHit;
if(Physics.Raycast(ray, hit)){
if(hit.transform == button.transform){
clicked = true;
testObject.active = false;
testObject2.active = true;
}else{
clicked = false;
testObject.active = true;
testObject2.active = false;
}
}
}
Thanks dude.But are you sure its correct?I get several compiller errors.
i have updated the code. the error caused by testObject + testObject2 have not declared & camera is reserved variable name in a GameObject
you should manually assign your camera, button, testObject, & testObject2 from inspector tab before running the project
Your answer
Follow this Question
Related Questions
I need help instantiateing a bullet 0 Answers
Unity Editor Function Animation 0 Answers
Stand alone player 0 Answers
My bullet wont move forward 1 Answer
NGUI panel wont hide 2 Answers