- Home /
camera zoom using gui button
hi, everyone
i am having little prob while zoomin camera using GUIbutton.
can somebody help me ??
here's code for my camera
//WASD to orbit, left Ctrl/Alt to zoom
using UnityEngine;
using System.Collections;
[AddComponentMenu("Camera-Control/Keyboard Orbit")]
public class Guikeys : MonoBehaviour {
public Transform target;
public float distance = 20.0f;
public float zoomSpd = 2.0f;
public float xSpeed = 240.0f;
public float ySpeed = 123.0f;
public int yMinLimit = -723;
public int yMaxLimit = 877;
private float x = 0.0f;
private float y = 0.0f;
private float GUIHorizontal = 0;
private float GUIVertical = 0;
public GUIStyle uptexture;
public GUIStyle lefttexture;
public GUIStyle righttexture;
public GUIStyle downtexture;
public GUIStyle Zoomintexture;
public GUIStyle Zoomouttexture;
public GUIStyle reset;
public void Start () {
Vector3 angles = transform.eulerAngles;
x = angles.y;
y = angles.x;
// Make the rigid body not change rotation
if (rigidbody)
rigidbody.freezeRotation = true;
}
void OnGUI()
{
if(Event.current.type == EventType.Repaint)
{
GUIHorizontal = 0;
GUIVertical = 0;
}
//GUI.Box(new Rect(910,45,106,120),"Camera Control");
//GUI.Box(new Rect(810,175,205,40),"");
GUILayout.BeginVertical();
if(GUI.RepeatButton(new Rect(1130,470,30,30),"",uptexture))
{
GUIVertical = 1;
}
GUILayout.BeginHorizontal();
if(GUI.RepeatButton(new Rect(1100,500, 30, 30),"", lefttexture))
{
GUIHorizontal = -1;
}
if(GUI.RepeatButton(new Rect(1160,500, 30, 30),"", righttexture))
{
GUIHorizontal = 1;
}
GUILayout.EndHorizontal();
if(GUI.RepeatButton(new Rect(1130,530, 30, 30),"", downtexture))
{
GUIVertical = -1;
}
GUILayout.EndVertical();
if(GUI.RepeatButton(new Rect(1130,565, 30, 30),"",Zoomintexture))
{
// i was just trying to press keyboard key via GUIbutton but didn't work.
//Input.GetKeyDown("Plus");
}
if(GUI.RepeatButton(new Rect(1130,600, 30, 30),"",Zoomouttexture))
{
//Input.GetKeyDown("Minus");
// same here
}
if(GUI.RepeatButton(new Rect(1130,50, 30, 30),"",reset))
{
//reset camera;
}
}
public void LateUpdate () {
if (target) {
x -= Input.GetAxis("Horizontal") * xSpeed * 0.02f;
y += Input.GetAxis("Vertical") * ySpeed * 0.02f;
x -= GUIHorizontal * xSpeed * 0.02f;
y += GUIVertical * ySpeed * 0.02f;
y = ClampAngle(y, yMinLimit, yMaxLimit);
distance -= Input.GetAxis("Fire1") *zoomSpd* 0.02f;
distance += Input.GetAxis("Fire2") *zoomSpd* 0.02f;
Quaternion rotation = Quaternion.Euler(y, x, 0.0f);
Vector3 position = rotation * new Vector3(0.0f, 0.0f, -distance) + target.position;
transform.rotation = rotation;
transform.position = position;
}
}
public static float ClampAngle (float angle, float min, float max) {
if (angle < -360.0f)
angle += 360.0f;
if (angle > 360.0f)
angle -= 360.0f;
return Mathf.Clamp (angle, min, max);
}
}
no answer ..????
is that really hard question for u guys .. ??
just want some help .
just need direction how do i do it.. plz help
The problem here is that you haven't asked an answerable question- you've made a statement and posted an entire script that nobody can be bothered reading all the way through to debug. Please ask a specific question, and I'm sure somebody will be able to help you.
ohhh thanx Syclamoth
but i put the entire script bcoz i want exact solution.
to understand exactly what m i asking.
anyways
can u help me .. i just want to add zoom function in button.
i can do it with key board and mouse scroll but i also want to add in gui button.
thanx
Answer by kristercollin · Aug 31, 2012 at 05:55 AM
Jack,
When you say "i can do it with key board and mouse scroll but i also want to add in gui button.", do you mean that you had a function to scroll the camera while the game was playing when a certain key was pressed?
If that is what you meant, then you probably would have had something like the following, right?
if (Input.GetKeyDown("q"))
{
ZoomIn();
}
If that worked, then all you have to do is put the function call as a response to your GUI Button being pressed, like such:
if(GUI.RepeatButton(new Rect(1130,565, 30, 30),"",Zoomintexture))
{
ZoomIn();
}
Hope that helps.
As a final point, though, if you had spent just a bit of time googling and thinking about the problem, you would likely have solved it yourself, as it's a question that's been asked before (many times, a quick google search tells me). If you want to guarantee that you will have our help, then just show us that you've tried doing the learning yourself, show us that you tried some solutions out yourself and that you had enough initiative to look and see if the question was already answered before asking it.
thanx for replay kristercollin
actually i tried to find solution but i didn't get it.
i don't have any zoo$$anonymous$$ function. even i didn't have any input.Get$$anonymous$$eyDown.
u can check in my script
i used distance variable for which calculate distance between camera and target and it will controll by CTRL and ALT (Fire1 and Fire2 )
i want to execute fire1 and fire2 on gui button down.
thanx
Answer by Griffo · Aug 31, 2012 at 07:22 AM
Do you know how to add a GUI button with touch input? If you do add this to the script and call it when touch.. Not tested ..
private var toggle : boolean = true; // Is the camera zoomed in
private var time : float;
var zoom : int = 20;
var normal : int = 60;
var smooth : float = 5;
function Awake() {
}
function Start () {
}
function Update () {
// Your touch input here and call zoomCamera function
}
function zoomCamera(){
time = smooth;
if(toggle){
while (time > 0.0f){
Camera.main.fieldOfView = Mathf.Lerp(Camera.main.fieldOfView,zoom,Time.deltaTime*smooth);
time -= Time.deltaTime;
yield;
}
toggle=false;
}else{
while (time > 0.0f){
Camera.main.fieldOfView = Mathf.Lerp(Camera.main.fieldOfView,normal,Time.deltaTime*smooth);
time -= Time.deltaTime;
yield;
}
toggle=true;
}
}
Your answer
Follow this Question
Related Questions
Raycast misses after camera zoom 2 Answers
flickering lines when zooming fov (both GUI and ortho cameras). 2 Answers
Unity2D - Camera in exported game is zoomed out compared to unity game preview HELP PLEASE! 2 Answers
Moving camera around with GUI buttons 4 Answers
Is there a way to zoom GUI and scene at the same time? 0 Answers